类名:ProBaseInfo    商品信息表
下面很多商品的属性
然后就是多对多的关系对应了
private Set sellNodeProStores = new HashSet(0);  就会出现这个然后我筛选查询的时候需要sellNodeProStores这个对象
Criteria criter = session.createCriteria(ProBaseInfo.class).add(Expression.ne("sellNodeProStore", getSellNodeProStores()));但是发现这样写不行,criteria是根据属性来筛选查询的
但是我也需要通过sellNodeProStores 来筛选,来该怎么写?

解决方案 »

  1.   

    不知道你想要什么效果,
    是不是 from ProBaseInfo p where  all elements(p.sellNodeProStore) not in :sellNodeProStore
      

  2.   

    select a.* from proBaseInfo a
    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去处理,该怎么写
      

  3.   

     */
    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);所以正确的写法是什么?
      

  4.   


    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(); //在查询中加入子查询业务自己整。