以下是通过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());
}本文出自 “Coder随手记-技术分享” 博客,请务必保留此出处http://viphyy.blog.51cto.com/6403455/1600199
原文:http://viphyy.blog.51cto.com/6403455/1600199