Оператор CASE в HQL или Criteria

получено из этого вопроса , можно ли использовать HQL или критерии для следующего оператора SQL:

SELECT 
   e.type, 
   count(e), 
   count(d), 
   count (case when gender = 'male' then 1 else NULL end) AS NumberOfMaleEmployees
from Department d 
JOIN d.employees e
WHERE e.dead = 'maybe' 
GROUP BY e.type

Хотя Google предлагает несколько обращений, в которых говорится, что HQL поддерживает операторы CASE, Hibernate 3.6.6 завершается с ошибкой

QuerySyntaxException: неожиданный токен: CASE

, когда я создаю запрос выше в экземпляре EntityManager.

Сколько? плохая идея - создать еще один запрос для каждого e.type, чтобы определить количество мужчин вручную, например, для каждого e.type

SELECT 
   count(e), 
from Department d 
JOIN d.employees e
WHERE e.dead = 'maybe', e.type = ugly

Поскольку типов может быть довольно много, это потенциально медленно. например, база данных, которая сделает всю работу за меня.

6
задан Community 23 May 2017 в 10:29
поделиться