derivado de this question, es posible el uso de HQL o criterios para la siguiente instrucción SQL:instrucción CASE en HQL o Criteria
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
Aunque Google viene con algunos golpes ese estado HQL soporta instrucciones CASE, Hibernate 3.6.6 falla con un QuerySyntaxException
: símbolo inesperado: CASO
cuando se crea la consulta anterior en una instancia de EntityManager.
¿Qué tan mala idea es crear otra consulta para cada e.type para determinar el número de hombres manualmente, p. para cada e.tipo
SELECT
count(e),
from Department d
JOIN d.employees e
WHERE e.dead = 'maybe', e.type = ugly
Dado que podría haber bastantes tipos, esto es potencialmente lento. Me gustaría que la base de datos haga el trabajo por mí.
Gracias, esto me salvó de volverme loco. Aquí está el [informe de error] (https://hibernate.onjira.com/browse/HHH-4150). Tiene años, pero aún no se ha resuelto ... –
¿Podemos hacerlo usando la consulta Criteria? –
También funciona con la API de Criteria. – gillesB