jueves, 27 de febrero de 2020

Contar registros de una tabla con hibernate

Me llevó tiempo saber como se podía contar los registros de una tabla usando Hibernate 5.4.7.Final estoy usando java openJDK 8 pero la parte difícil era que yo quería usar la instrucción count() de MariaDB pero como las consultas de hibernate regresan un objeto como podía hacer para que regresara un solo valor, un número.
Después de buscar y probar mucho en internet encontré la forma y hago también la salvedad que probé con un integer pero no funciona, con int y con Integer.
Así quedo el método que regresa el número de filas de la tabla de datos.

public long totalDeRegistros(){
        long numTotalDeObjetos;
        TypedQuery<Long> consulta;
        EntityManager em = getEntityManager();
        consulta = em.createQuery("SELECT count(a) FROM Alumno as a",Long.class);
        numTotalDeObjetos =  consulta.getSingleResult();
        return numTotalDeObjetos;
    }

el método getSingleResult() es para resultados únicos como en este caso que regresa un número de registros para usarlo en listados de objetos si el resultado no existe o el número de los registros a regresar es más de uno dará una excepción por eso lo más recomendable es usarlo solo en respuestas únicas como count.