2012-08-24 166 views
3

我现在正在这样做。CriteriaBuilder布尔比较

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

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

我可以这样使用它吗?

builder.equals(expression, flag); 

这次尝试不会有什么问题吗?对于表达或其他内容说空。

回答

9

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

builder.equal(expression, flag); 

这相当于:

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

但要注意,如果你使用Hibernate作为JPA提供商前实现将抛出NPE在case expression==null是正确的,而后者不会。