ограничения и / или порядок гибернации - PullRequest
4 голосов
/ 26 июня 2009

небольшие вопросы о Restrictions.or и Restrictions.and

Если я сделаю что-то вроде этого:

...
criterion = criterionA;
criterion = Restrictions.and(criterion, criterionB);
criterion = Restrictions.or(criterion, criterionC);
criterion = Restrictions.and(criterion, criterionD);

Будет ли это рассматриваться как:

(A and B) or (C and D) (following mathematical conventions)

Или это будет обработано в порядке добавления ограничений:

(((A and B) or C) and D)

Пожалуйста, добавьте ссылки, если есть ...

Ответы [ 2 ]

6 голосов
/ 26 июня 2009

Это следует рассматривать как последнее

(((A and B) or C) and D)

Вы могли бы сделать

criterion = Restriction.or(Restrictions.and(criterionA, criterionB), Restrictions.and(criterionC, criterionD))

Если вы хотите первое решение

2 голосов
/ 26 июня 2009

правил приоритета нет (как в языке программирования или в синтаксическом анализаторе CFG), порядок вызовов методов однозначно определяет выражение.

(A и B) или (C и D) должны быть переведены на:

import static org.hibernate.criterion.Restrictions.*;
...
criterion = or(and(A, B), and(C,D));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...