2013-01-08 120 views
1
Criteria criteria = getSession().createCriteria(clazz); 
Criterion rest1= Restrictions.and(Restrictions.eq("A", "X"), 
     Restrictions.in("B", Arrays.asList("X","Y"))); 
Criterion rest2= Restrictions.and(Restrictions.eq("A", "Y"), 
     Restrictions.eq("B", "Z")); 
criteria.add(Restrictions.or(rest1, rest2)); 

如何创建条件,如果有奇数个AND参数,例如。 5?休眠准则

+0

如果有2个paramters用,它可以做到以上但是当有3或5时?有一个简单的方法吗? –

回答

4

您可以使用DetachedCriteria之后,它会看起来像:
Disjunction disjunction = Restrictions.disjunction();
disjunction.add(rest1);
disjunction.add(rest2);
disjunction.add(rest3);
...
dc.add(disjunction);

并可以使用Conjunction而不是Disjunction

+0

是否有任何支持HQL正则表达式搜索? –

+0

谢谢,它帮助了我! –

2

就拿以前调用Restrictions.and()的结果作为参数之一Restrictions.and()

例如:

Criterion cr = Restrictions.and(Restrictions.and(Restrictions.eq("A", "X"), 
     Restrictions.in("B", Arrays.asList("X","Y"))), Restrictions.eq("C", "Z));