标签:多对多查询 多对多注解 criteria 实体查询条件
以下是通过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
标签:多对多查询 多对多注解 criteria 实体查询条件
原文地址:http://viphyy.blog.51cto.com/6403455/1600199