2011-04-08 92 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