Как создать фиктивный предикат в JPA - PullRequest
4 голосов
/ 05 сентября 2011

Есть ли способ создать фиктивный предикат в JPA?Вроде как это:

CriteriaBuilder cb = em.getCriteriaBuilder;
Predicate pred = cb.isTrue(false);

Почти все методы CriteriaBuilder принимают Expression в качестве параметра.Я также попробовал это безрезультатно:

Expression<Object> path = cb.coalesce.value(null);
Predicate pred = cb.isNotNull(path);

Очевидно, что он выбрасывает NPE, однако я подумал, что это может сработать, потому что согласно документации API:

Выражение coalesce эквивалентнов выражение case, которое возвращает ноль, если все его аргументы имеют значение null , а значение его первого ненулевого аргумента в противном случае.

Ответы [ 2 ]

8 голосов
/ 27 марта 2015

dijunction не работал для меня в более сложном запросе в Eclipselink 2.4.

То, что было, было cb.isTrue(cb.literal(false)), которое является настолько точным представлением false, насколько это возможно.

7 голосов
/ 05 сентября 2011

Я думаю, дизъюнкция - это то, что вы ищете.По умолчанию оно ложно, пока какой-то реальный предикат не будет or изменен на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...