类名:ProBaseInfo 商品信息表
下面很多商品的属性
然后就是多对多的关系对应了
private Set sellNodeProStores = new HashSet(0); 就会出现这个然后我筛选查询的时候需要sellNodeProStores这个对象
Criteria criter = session.createCriteria(ProBaseInfo.class).add(Expression.ne("sellNodeProStore", getSellNodeProStores()));但是发现这样写不行,criteria是根据属性来筛选查询的
但是我也需要通过sellNodeProStores 来筛选,来该怎么写?
下面很多商品的属性
然后就是多对多的关系对应了
private Set sellNodeProStores = new HashSet(0); 就会出现这个然后我筛选查询的时候需要sellNodeProStores这个对象
Criteria criter = session.createCriteria(ProBaseInfo.class).add(Expression.ne("sellNodeProStore", getSellNodeProStores()));但是发现这样写不行,criteria是根据属性来筛选查询的
但是我也需要通过sellNodeProStores 来筛选,来该怎么写?
是不是 from ProBaseInfo p where all elements(p.sellNodeProStore) not in :sellNodeProStore
where pb_id=(select pb_id from admInfo
where adm_id=(select adm_id from sellNode
where sn_id=50005)) and pbi_id not in (select distinct pbi_id
from proProduceID where sn_id=50005)
就是这种sql语句 用Criteria去处理,该怎么写
public List snQueryProBaseInfo(int pbId, int snId) {
session = HibernateSessionFactory.getSession(); // 得到品牌编号
ProBrand proBrand = (ProBrand) session.get(ProBrand.class, pbId); SellNode sellNode = (SellNode) session.get(SellNode.class, snId); List pinfolist = session.createCriteria(ProBaseInfo.class).add(
Restrictions.eq("proBrand", proBrand)).add(Expression.ne("sellNodeProStores", sellNode.getSellNodeProStores())).list(); session.close();
return pinfolist;
}
这是相关的 方法但是错误在add(Expression.ne("sellNodeProStores", sellNode.getSellNodeProStores()))这里因为是要加入对象的但是在ProBaseInfo这个对象中,有这样一个对应的关系
private Set sellNodeProStores = new HashSet(0);所以正确的写法是什么?
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(); //在查询中加入子查询业务自己整。