2012-08-24 120 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是正確的,而後者不會。