hibernate Criteria查询多对多(Set集合)条件筛选
查询用户userStatus等于1且他的角色Level等于3的用户
?
PO
?
public class UserPO implements java.io.Serializable {/** 用户唯一标识ID */private String id;/** 状态(在用1停用0) */private String userStatus;private Set roles = new HashSet();........}?
public class RolePOimplements java.io.Serializable {/** 角色唯一标识ID */private String id;/** 角色级别 */private Integer roleLevel;private Set users = new HashSet(0);........}?
?
?
查询用户userStatus等于1且他的角色Level等于3的用户
?
DetachedCriteria criteria = DetachedCriteria.forClass(UserPO.class); // org.hibernate.criterion.DetachedCriteriacriteria.add(Restrictions.eq("userStatus", "1")).createAlias("roles", "r").add(Restrictions.eq("r.roleLevel", new Integer(3)));??
?
criteria.add(Restrictions.eq("userStatus", "1"))
.createAlias("roles", "r")
.add(Restrictions.eq("r.roleLevel", new Integer(3)));
?
?
需要注意的是:
?
获取User时是获得了roles的全部记录集,而不是经过过滤的记录集,相当于User的id获得的完整实例一样
?
?
?
.