日期:2014-05-20  浏览次数:20752 次

hibernate 排除查询的问题,就是对象和对象出现多对多的关系时
类名:ProBaseInfo 商品信息表
下面很多商品的属性
然后就是多对多的关系对应了
private Set sellNodeProStores = new HashSet(0); 就会出现这个

然后我筛选查询的时候需要sellNodeProStores这个对象


Criteria criter = session.createCriteria(ProBaseInfo.class).add(Expression.ne("sellNodeProStore", getSellNodeProStores()));

但是发现这样写不行,criteria是根据属性来筛选查询的
但是我也需要通过sellNodeProStores 来筛选,来该怎么写?

------解决方案--------------------
Java code

DetachedCriteria subquery = DetachedCriteria.forClass(Order.class, "o"); //创建一个子查询
subquery.add(Restrictions.between("createTime", DateUtils.addDays(createDate, 1), DateUtils.addDays(createDate, 2))).setProjection(
                Property.forName("o.cenacle.id")); //为子查询添加条件
return createCriteria(Subqueries.propertyNotIn("id", subquery)).list(); //在查询中加入子查询