2013-01-08 121 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));