41

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

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

4

3 回答 3

61

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

于 2013-02-03T17:43:46.167 回答
23

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();
于 2017-05-28T15:56:37.220 回答
7

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

我个人认为下面的方法更清楚,虽然有点长。

永远真实

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

总是假的

criteriaBuilder.isFalse(criteriaBuilder.literal(true));
于 2020-04-27T17:03:12.543 回答