JPA CriteriaBuilder кейс-запрос - PullRequest
3 голосов
/ 08 апреля 2011

Может ли кто-нибудь привести пример написания запроса с использованием CriteriaBuilder?

Ответы [ 2 ]

7 голосов
/ 09 апреля 2011

Ниже приведен пример выражения с использованием 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");

Генерирует следующий SQL запрос:

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

Подробнее см. Выражения регистров JPA 2.0 .

5 голосов
/ 14 июня 2012

Я не смог найти caseStatement в JPA 2.0 Criteria API.Кажется, это свойственно EclipseLink.Правильный способ - использовать "builder.selectCase ()"

См. Раздел "Выражения регистра" в Pro JPA 2: освоение API персистентности Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...