2011-04-08 135 views

回答

7

下面是使用CriteriaBuilder樣本CASE表達式(這部作品在JPA 2):

Hashtable caseTable = new Hashtable(3); 
caseTable.put("Bob", "Bobby"); 
caseTable.put("Susan", "Susie"); 
caseTable.put("Eldrick", "Tiger"); 
Expression expression = builder.get("firstName").caseStatement(caseTable, "NoNickname").equal("Bobby"); 

生成下面SQL查詢:

"CASE t1.firstName WHEN 'Bob' THEN 'Bobby' WHEN 'Susan' THEN 'Susie' WHEN 'Eldrick' THEN 'Tiger' ELSE 'NoNickname' END = 'Bobby'" 

欲瞭解更多信息,請參閱JPA 2.0 Case Expressions

+2

這個作品中的EclipseLink,不是一般的JPA 2 – Zavael 2014-10-27 10:38:44

5

我在JPA 2.0 Criteria API中找不到「caseStatement」。看起來它的EclipseLink是特定的。 正確的方法是使用「builder.selectCase()」

參看「CASE表達式」在Pro JPA 2: Mastering the Java Persistence API

+0

的聯繫是峨眉 – Ralph 2012-11-01 17:00:26

+0

我很抱歉。更新了鏈接:) – Manu 2012-11-02 08:56:21