6

我目前正在这样做。

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

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

我可以这样使用它吗?

builder.equals(expression, flag);

这个尝试不会有问题吗?说 null 表示表达式或其他内容。

4

1 回答 1

17

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

builder.equal(expression, flag);

这相当于:

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

但请注意,如果您使用Hibernate作为JPA提供者,前一个实现将抛出 NPE,以防万一expression==null,而后一个实现不会。

于 2012-08-24T15:48:27.990 回答