Search code examples
hibernatecriteriahibernate-criteriarestrictions

Hibernate Criteria Restrictions AND / OR combination


How would I achieve this using Hibernate Restrictions?

(((A='X') and (B in('X',Y))) or ((A='Y') and (B='Z')))

Solution

  • think works

    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));