CriteriaBuilder布尔比较

Jin*_*won 4 jpa criteria criteria-api

我现在正在这样做.

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

if (flag) {
    builder.isTrue(expression);
} else {
    builder.isFalse(expression);
}
Run Code Online (Sandbox Code Playgroud)

我能这样用吗?

builder.equals(expression, flag);
Run Code Online (Sandbox Code Playgroud)

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

Ole*_*nko 12

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

builder.equal(expression, flag);
Run Code Online (Sandbox Code Playgroud)

这相当于:

if (flag) {
  builder.isTrue(expression);
} else {
  builder.isFalse(expression);
}
Run Code Online (Sandbox Code Playgroud)

但要注意,如果你使用HibernateJPA供应商前实现将在情况下抛出NPE expression==null是真实的,而后者不会.