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
Integer
instancia, por lo que es mejor usarlojava.lang.Number
por seguridad.fuente
org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions.CountFunction
( StandardBasicTypes.LONG )Tu podrías intentar
count(*)
¿Dónde
Books
está 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
Number
es que algunas bases de datos regresarán,Long
mientras que otras regresaránBigInteger
, por lo que por razones de portabilidad, es mejor que envíe aNumber
y obtenga unint
o along
, dependiendo de cuántas filas espera contar.fuente