JPA Criteria API:如何表达文字true和literal false?

Abd*_*ull 26 jpa criteria-api

如何在JPA的Criteria API中表达文字true和文字false

我正在寻找像Predicate alwaysTrue = CriterialBuilder.DefaultLiterals.TRUE(类似java.lang.Boolean.TRUE)的东西.

JB *_*zet 41

要获得始终如一的Predicate实例,请使用criteriaBuilder.and().
要获得始终为false的Predicate实例,请使用criteriaBuilder.or().

  • 你可以使用`CriteriaBuilder.or()`.我也发现这个API很糟糕. (6认同)
  • `CriteriaBuilder.and()`返回一个始终为真的谓词.http://docs.oracle.com/javaee/6/api/javax/persistence/criteria/CriteriaBuilder.html#and%28javax.persistence.criteria.Predicate...%29 (4认同)

Joh*_*ler 16

尽管其他答案解决了问题,但我认为它们没有显示代码的意图,这应该是“始终正确的谓词”。

我个人认为下面的方法更清晰,尽管有点长。

永远真实

criteriaBuilder.isTrue(criteriaBuilder.literal(true));
Run Code Online (Sandbox Code Playgroud)

总是假的

criteriaBuilder.isFalse(criteriaBuilder.literal(true));
Run Code Online (Sandbox Code Playgroud)


Pat*_*ner 9

CriteriaBuilder #coele()返回一个TRUE谓词.

CriteriaBuilder #disjunction()返回一个FALSE谓词.

/**
 * Create a conjunction (with zero conjuncts).
 * A conjunction with zero conjuncts is true.
 *
 * @return and predicate
 */
Predicate conjunction();

/**
 * Create a disjunction (with zero disjuncts).
 * A disjunction with zero disjuncts is false.
 *
 * @return or predicate
 */
Predicate disjunction();
Run Code Online (Sandbox Code Playgroud)