У меня есть несколько критериев, построенных из критериев, и я хотел бы создать дизъюнкцию между ними.
Criteria criteria1 = hibernateSession.createCriteria(MyClass);
criteria1.add(Restrictions.eq(field1, value1));
criteria1.add(Restrictions.eq(field2, value2));
criteria1.add(Restrictions.ne(field3, value3));
Что создаст что-то вроде Where field1 = value1 and field2 = value and field3 != value3
.
Затем,
Criteria criteria2 = hibernateSession.createCriteria(MyClass);
criteria2.add(Restrictions.eq(field4, value4));
criteria2.add(Restrictions.eq(field5, value5));
Что создаст что-то вроде Where field4 = value4 and field5 = value5
.
Моя конечная цель здесь заключается в создании дизъюнкции между criteria1
и criteria2
чтобы иметь Where (field1 = value1 and field2 = value and field3 != value3) OR (field4 = value4 and field5 = value5)
.
Я знаю о дизъюнкции/объединении в спящем режиме, однако они принимают только критерии (а не критерии).
Кто-нибудь из вас достиг чего-то подобного раньше?
Создайте два критерия И. Добавьте их в критерии как OR.
Criteria criteria = hibernateSession.createCriteria(MyClass);
Criterion rest1= Restrictions.and(Restrictions.eq(field1, value1),
Restrictions.eq(field2, value2),
Restrictions.ne(field3, value3));
Criterion rest2= Restrictions.and(Restrictions.eq(field4, value4),
Restrictions.eq(field5, value5));
criteria.add(Restrictions.or(rest1, rest2));