CASO de declaración en HQL o Criterios de

derivados de esta pregunta, es posible el uso de HQL o Criterios para la siguiente instrucción 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

A pesar de que google viene con un par de hits que el estado HQL apoya CASO de declaraciones, Hibernate 3.6.6 falla con un

QuerySyntaxException: testigo inesperado: el CASO de

cuando me cree la consulta anterior en una instancia de EntityManager.

Cuánto de una mala idea es crear otra consulta para cada correo.para determinar el número de varones manualmente, por ejemplo, por cada correo.tipo de

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

Como no podía ser de muy pocos tipos, esto es potencialmente lento. Me gustaría que la base de datos para hacer el trabajo por mí.

OriginalEl autor Clayton Louden | 2011-08-15

1 Kommentar

  1. 11

    Bien, parece que, en caso de que las declaraciones son compatibles:

    http://docs.jboss.org/hibernate/core/3.5/reference/en/html/queryhql.html

    Ellos simplemente no parece funcionar dentro de count(). Una alternativa sería el uso de la suma(caso cuando… then 1 else 0 end) en su lugar

    Gracias, esto sólo me salvó de ir a lo loco. Aquí está el informe de errores. Años de edad, pero todavía sin resolver…
    Podemos hacerlo utilizando los Criterios de la consulta??
    También trabaja con la API de Criterios.

    OriginalEl autor Clayton Louden

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea