CriteriaBuilder布尔比较

时间:2012-08-24 06:31:32

标签: jpa criteria criteria-api

我目前正在这样做。

final CriteriaBuilder builder = ...;
final boolean flag = ...;

if (flag) {
    builder.isTrue(expression);
} else {
    builder.isFalse(expression);
}

我可以像这样使用它吗?

builder.equals(expression, flag);

这尝试不会有任何问题吗?对表达式或其他东西说null。

1 个答案:

答案 0 :(得分:12)

我想你暗示使用CriteriaBuilder的{​​{1}}方法。在这种情况下,是的,您可以按如下方式使用它:

equal

这相当于:

builder.equal(expression, flag);

但请注意,如果您使用if (flag) { builder.isTrue(expression); } else { builder.isFalse(expression); } 作为Hibernate提供程序,则前一个实现将抛出NPE,以防JPA为真,而后者则不会。