浏览 1367 次
|
该帖已经被评为新手帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-07-16 关键字: Restrictions.or
在一个查询的功能中,我需要实现
where a='b' and c='d' and (e like '%f%' or g like '%h%' or j like '%k%' or ....) 的功能,括号中的or语句是动态的,个数不定。 前面的a='b' and c='d'可以使用 DetachedCriteria detachedCriteria=DetachedCriteria.forClass(abc.class);
detachedCriteria.add(Restrictions.eq("a","b"));
detachedCriteria.add(Restrictions.eq("c","d"));
但是在增加后面的查询条件时发现Restrictions.or只支持两个条件的or查询,hibernate手册中的例程如下: List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.add( Restrictions.or(
Restrictions.eq( "age", new Integer(0) ),
Restrictions.isNull("age")
) )
.list();
求教各位,这个问题该怎么解决, 万分感谢! 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-22
我理解的Restrictions.or(
Restrictions.eq( "age", new Integer(0) ), Restrictions.isNull("age") ) 也是一个条件,以此类推 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-22
但是这个方法是不是有点傻?有没有更好的解决方法?
可惜没人指点。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-15
楼上的意思是当碰到奇数个时不和配对是吧。其实很简单 so easy!
detachedCriteria.add(Restrictions.or(Restrictions.or(Restrictions.or(Restrictions.ne("hasMediumReport","1"), Restrictions.ne("hasFinalReport", "1")), Restrictions.or(Restrictions.ne("hasOtherReport", "1"), Restrictions.ne("hasDeputyReport", "1"))), Restrictions.ne("hasInitReport", "1")));
|
|
| 返回顶楼 | |




