#jpa #jpa-2.0
#jpa #jpa-2.0
Вопрос:
Кто-нибудь может привести пример того, как написать case-запрос с помощью CriteriaBuilder
?
Ответ №1:
Ниже приведен пример выражения прецедента с использованием 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.
Ответ №2:
Я не смог найти «caseStatement» в JPA 2.0 Criteria API. Кажется, его EclipseLink специфичен. Правильный способ — использовать «builder.selectCase()»
Смотрите раздел «Case Expressions» в Pro JPA 2: Освоение Java Persistence API
Комментарии:
1. Прошу прощения. Обновил ссылку 🙂