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