JPA CriteriaBuilder案例查询

use*_*201 3 jpa jpa-2.0

任何人都可以提供如何编写案例查询的示例CriteriaBuilder吗?

Lam*_*bda 7

以下是使用的示例案例表达式CriteriaBuilder(这适用于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");
Run Code Online (Sandbox Code Playgroud)

它生成以下SQL查询:

"CASE t1.firstName WHEN 'Bob' THEN 'Bobby' WHEN 'Susan' THEN 'Susie' WHEN 'Eldrick' THEN 'Tiger' ELSE 'NoNickname' END = 'Bobby'"
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅JPA 2.0 Case Expressions.

  • 这适用于eclipseLink,而不是一般的jpa 2 (2认同)

Man*_*anu 5

我在JPA 2.0 Criteria API中找不到"caseStatement".似乎它的EclipseLink特定.正确的方法是使用"builder.selectCase()"

请参阅Pro JPA 2:掌握Java Persistence API中的 "案例表达式"部分