Criterios de hibernación: Proyección de Conde con el grupo por la cláusula
-
29-09-2019 - |
Pregunta
Quiero ejecutar el siguiente código SQL
select count(*) as myCount from user group by name;
me ocurrió con los siguientes criterios para el mismo
DetachedCriteria.ForClass(typeof(UserDTO))
.setProjections(Projections.ProjectionList()
.Add(Projections.rowCount(),"myCount")
.Add(Projections.groupProperty("this.name"));
Me da la espalda como consecuencia par de la cuenta y el nombre, ¿Cómo puedo obtener sólo el recuento de esta.
Solución
No creo que pueda hacerlo con criterios, pero es fácil con HQL. Es exactamente la misma cadena que la consulta SQL, pero con nombres de entidad / propiedad en lugar de los de mesa / columna.
Otros consejos
Puede utilizar recuento diferente si sólo hay un grupo por la columna.
HQL:
select count(distinct name) as myCount from user
Criterios:
DetachedCriteria.ForClass(typeof(UserDTO))
.setProjections(Projections.ProjectionList()
.Add(Projections.countDistinct("name"),"myCount"));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow