如何在JPA中创建虚假谓词

jFr*_*tic 5 java criteria-api jpa-2.0

有没有办法在JPA中创建虚假谓词?有点像:

CriteriaBuilder cb = em.getCriteriaBuilder;
Predicate pred = cb.isTrue(false);
Run Code Online (Sandbox Code Playgroud)

CriteriaBuilder的几乎所有方法都将Expression作为参数.我也试过这个无济于事:

Expression<Object> path = cb.coalesce.value(null);
Predicate pred = cb.isNotNull(path);
Run Code Online (Sandbox Code Playgroud)

显然它会抛出NPE,但我认为这可能有用,因为根据API文档:

coalesce表达式等效于case表达式,如果其所有参数的计算结果为null,则返回null,否则返回其第一个非null参数的值.

JB *_*zet 8

我认为脱节是你正在寻找的.默认情况下它是假的,直到有一些真正的谓词为止or.


pdu*_*its 8

dijunction 在Eclipselink 2.4中更复杂的查询对我不起作用.

所做的是cb.isTrue(cb.literal(false))作为一个人可以得到的错误的精确表示.