hibernate 多对多注解配置及实体属性条件查询

以下是通过hibernate注解的方式写的多对多关系用户和角色实体,即一个用户有多个角色,一个角色下也有多个用户。

普通属性作为条件查询相信那么简单大家都会了,如下是一个关系实体作为查询条件的小例子。


用户和角色的多对多配置如下:

@Entity
public class UserInfo {
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer id;
	private String no;
	private String name;
	private int age;
	private Date createDate;
	
	@ManyToMany(fetch=FetchType.EAGER)
	private Set<RoleInfo> roles;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	
	public Set<RoleInfo> getRoles() {
		return roles;
	}

	public void setRoles(Set<RoleInfo> roles) {
		this.roles = roles;
	}

	public String getNo() {
		return no;
	}

	public void setNo(String no) {
		this.no = no;
	}

	public Date getCreateDate() {
		return createDate;
	}

	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}

}


角色实体如下:

@Entity
public class RoleInfo {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer id;
	private String name;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "RoleInfo [id=" + id + ", name=" + name + "]";
	}
	
}

现在要查询角色名叫“管理员的”用户

查询代码如下:

	@Test	
	public void testQueryRelation(){
		Session session=sessionFactory.getCurrentSession();
		Criteria criteria =session.createCriteria(UserInfo.class);
		 //关联关系查询
		 criteria.createCriteria("roles").add(Restrictions.like("name", "管理员"));
		System.out.println(criteria.list());
		System.out.println(criteria.list().size());
	}


你可能感兴趣的:(Criteria,多对多查询,多对多注解,实体查询条件)