Por ejemplo, si tenemos una tabla Libros, ¿cómo contamos el número total de registros de libros con hibernación?
242
Para versiones anteriores de Hibernate (<5.2):
Suponiendo que el nombre de la clase es Libro:
return (Number) session.createCriteria("Book")
.setProjection(Projections.rowCount())
.uniqueResult();
Es al menos un Number, muy probablemente un Long.
return (Number) session.createCriteria(Book.class).setProjection(Projections.rowCount()).uniqueResult();En Java, generalmente necesito devolver int y usar este formulario:
fuente
Esto es lo que los documentos oficiales de hibernación nos dicen sobre esto:
Puede contar el número de resultados de la consulta sin devolverlos:
Sin embargo, no siempre devuelve
Integerinstancia, por lo que es mejor usarlojava.lang.Numberpor seguridad.fuente
org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions.CountFunction( StandardBasicTypes.LONG )Tu podrías intentar
count(*)¿Dónde
Booksestá el nombre fuera declass- no la tabla en la base de datos.fuente
Si está utilizando Hibernate 5+, la consulta se modificará como
O si necesitas TypedQuery
fuente
fuente
Esto funciona en Hibernate 4 (Probado).
Donde getCurrentSession () es:
fuente
Es muy fácil, solo ejecute la siguiente consulta JPQL:
La razón por la que estamos enviando
Numberes que algunas bases de datos regresarán,Longmientras que otras regresaránBigInteger, por lo que por razones de portabilidad, es mejor que envíe aNumbery obtenga uninto along, dependiendo de cuántas filas espera contar.fuente