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?

4

2 に答える 2

4

DetachedCriteria を使用すると、次のようになります。
Disjunction disjunction = Restrictions.disjunction();
disjunction.add(rest1);
disjunction.add(rest2);
disjunction.add(rest3);
...
dc.add(disjunction);

ConjunctionANDの代わりに を使用できますDisjunction

于 2013-01-08T22:38:42.030 に答える
2

以前の呼び出しの結果を、Restrictions.and()Restrictions.and() のパラメーターの 1 つとして取得するだけです。

例えば:

Criterion cr = Restrictions.and(Restrictions.and(Restrictions.eq("A", "X"), 
       Restrictions.in("B", Arrays.asList("X","Y"))), Restrictions.eq("C", "Z));
于 2013-01-08T22:38:55.010 に答える