How do I count the total records using Projections?

The example below show how to get total row count using the Projections.rowCount(). The result of this query will be a single object of Integer that contains the result of executing an SQL select count (*) command.

package org.kodejava.hibernate;

import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.Criteria;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Projections;
import org.kodejava.hibernate.model.Track;

import java.util.List;

public class ProjectionsCountDemo {
    public static Session getSession() throws HibernateException {
        String cfg = "hibernate.cfg.xml";
        SessionFactory sessionFactory = new Configuration().configure(cfg)
        return sessionFactory.openSession();

    public static void main(String[] args) {
        try (Session session = getSession()) {
            Criteria criteria = session.createCriteria(Track.class)

            List<?> result = criteria.list();
            if (!result.isEmpty()) {
                Long rowCount = (Long) result.get(0);
                System.out.println("Total records: " + rowCount);

Maven Dependencies


Maven Central Maven Central



    • Hi Dybuk,

      You can use the JPA Criteria API as the replacement for the deprecated Hibernate API.

      EntityManagerFactory factory =
      EntityManager em = factory.createEntityManager();
      CriteriaBuilder builder = em.getCriteriaBuilder();
      CriteriaQuery<Long> query = builder.createQuery(Long.class);;
      Long count = em.createQuery(query).getSingleResult();
      System.out.println("count = " + count);
  1. PS: Not related to this post


    There is a “Views: 8,799” on this page, could you point me to an article which has some information on how to manage views on a UI screen, if you already have one or provide some information on how it could be done.



Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.