现在使用:DetachedCriteria 进行查询,如下
criteria.add(Restrictions.like("name", name, MatchMode.ANYWHERE));如果查询条件是个Map,且里面的健值对没有规律,如何实现查询所有条件呢?

解决方案 »

  1.   

    可不可以使用set 遍历map.然后遍历criteria.add(Restrictions.like("name", name, MatchMode.ANYWHERE));
    查询条件 不过这种情况,对于查询效率不太好,
      

  2.   

    这样查询出来 的结果,是 and ,不是or 的,用or怎么实现呢?
      

  3.   

    Expression.or(Restrictions.like("name", name, MatchMode.ANYWHERE),
    Restrictions.like("name", name, MatchMode.ANYWHERE));
      

  4.   

    不知道Map里放了多少个,也不知道Map里的Key是什么,怎么办呢?
    主要是不知道Map里的数量.....
      

  5.   

    循环遍历map,key属性名,value值
    DetachedCriteria createria... 
    if (map!= null) {
    Disjunction disjunction = Restrictions.disjunction();
    for (Entry<String,Object> en:map.entrySet()) {
    criteria
    disjunction.add(Restrictions.like(en.getKey(), en.getValue()));
    }
    criteria.add(disjunction);
    }
      

  6.   

    OK,谢谢heruyipapa了,
    解决办法 if(orlk!=null){
    Disjunction disjunction = Restrictions.disjunction();
    keys = orlk.keySet().iterator();
    while(keys.hasNext()){
    o = keys.next();
    disjunction.add(Restrictions.like(o.toString(), orlk.get(o).toString(),MatchMode.ANYWHERE));
    }
    criteria.add(disjunction);
    }