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

时间:2013-02-03 17:36:25

标签: jpa criteria-api

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

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

3 个答案:

答案 0 :(得分:37)

要获得始终真实 Predicate实例,请使用criteriaBuilder.and()
要获得始终 false Predicate实例,请使用criteriaBuilder.or()

答案 1 :(得分:9)

CriteriaBuilder#conjunction()返回一个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();

答案 2 :(得分:0)

尽管其他答案可以解决问题,但我认为它们并未体现出代码的意图,该意图应该是“永远是真实的谓词”。

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

始终为真

criteriaBuilder.isTrue(criteriaBuilder.literal(true));

总是错误

criteriaBuilder.isFalse(criteriaBuilder.literal(true));