How to calculate sum() in hibernate criteria by using projection?
You can calculate sum of any numeric value in hibernate criteria by using projection. Projection is an interface and a class in ?org.hibernate.criterion?. For using Projection object in our Criteria, we have to call setProjection method.
Here is an example:
package net.roseindia.projection;
import java.util.*;
import net.roseindia.table.Employee;
import net.roseindia.util.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Projections;
public class SumProjection{
public static void main(String[] args) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
Criteria criteria=session.createCriteria(Employee.class);
criteria.setProjection(Projections.sum("salary"));
List employeeList = (List)criteria.list();
for(Object employee: employeeList){
System.out.println(employee);
}
}
}
Output:
Hibernate: select sum(this_.salary) as y0_ from employee this_ 275000
Description: Here we are calculating sum of all employee salary by using
criteria.setProjection(Projections.sum("salary"));