How to calculate average in Hibernate criteria query using Projection?
You can calculate average of any numeric values 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
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 ProjectionAvg{ public static void main(String[] args) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFactory.openSession(); Criteria criteria=session.createCriteria(Employee.class); criteria.setProjection(Projections.avg("salary")); List employeeList = (List)criteria.list(); for(Object employee: employeeList){ System.out.println(employee); } } }
Output-
Hibernate: select avg(this_.salary) as y0_ from employee this_ 68750.0
Description: Here we are calculating average of all employee salary by using
criteria.setProjection(Projections.avg("salary"))