我目前正在这样做。
final CriteriaBuilder builder = ...;
final boolean flag = ...;
if (flag) {
builder.isTrue(expression);
} else {
builder.isFalse(expression);
}
我可以这样用吗?
builder.equals(expression, flag);
这次尝试不会有任何问题吗?为表达式或某事说null。
我想您暗示使用了CriteriaBuilder
的equal
方法。在这种情况下是的,您可以按如下方式使用它:
builder.equal(expression, flag);
这相当于:
if (flag) {
builder.isTrue(expression);
} else {
builder.isFalse(expression);
}
但请注意,如果使用Hibernate
作为JPA
提供程序,则前一个实现将抛出NPE,以防expression==null
为真,而后一个实现不会。