Hibernate Criteria限制和/或组合

gir*_*low 65 hibernate criteria restrictions hibernate-criteria

我如何使用Hibernate Restrictions实现这一目标?

(((A='X') and (B in('X',Y))) or ((A='Y') and (B='Z')))
Run Code Online (Sandbox Code Playgroud)

osd*_*amv 168

认为有效

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));
Run Code Online (Sandbox Code Playgroud)