Criteria based queries in Hibernate

The following examples takes you through a series of aggregate functions, where clauses, group by and order by criteria using hibernate.
MAX( ) :
public int getMaxDeptId() {

    int maxId = 0;

    HibernateTemplate ht = new HibernateTemplate(sessionFactory);
    DetachedCriteria criteria = DetachedCriteria
            .forClass(Departments.class);
    criteria.setProjection(Projections.max("deptId"));

    List result = ht.findByCriteria(criteria);
    maxId = (Integer) result.get(0);

    return maxId;
}

Min( ):
public int getMinDeptId() {

    int minId = 0;

    HibernateTemplate ht = new HibernateTemplate(sessionFactory);
    DetachedCriteria criteria = DetachedCriteria
            .forClass(Departments.class);
    criteria.setProjection(Projections.min("deptId"));

    List result = ht.findByCriteria(criteria);

    minId = (Integer) result.get(0);
    return minId;
}



Restrictions based Query (AND, OR, comparators):
public List getCustomDepartments() {

 ArrayList values = new ArrayList();
 values.add("java");
 values.add("hibernate");
 values.add("Spring");
 values.add("XML");

 HibernateTemplate ht = new HibernateTemplate(sessionFactory);
 DetachedCriteria criteria = DetachedCriteria
   .forClass(Departments.class);

 criteria.add(Restrictions.in("deptName", values));
 criteria.add(Restrictions.and(Restrictions.in("deptName", values),
   Restrictions.le("deptId", 3)));

 criteria.addOrder(Order.desc("deptName"));

 return ht.findByCriteria(criteria);
}

GROUP BY:
public void getDepartmentsInEachYear() {

    HibernateTemplate ht = new HibernateTemplate(sessionFactory);
    DetachedCriteria criteria = DetachedCriteria
            .forClass(Departments.class);

    criteria.setProjection(Projections.groupProperty("yearStarted"));

    System.out.println(">>>>" + ht.findByCriteria(criteria).size());
}

Order By:
public List getDepartments(boolean ascending) {

    HibernateTemplate ht = new HibernateTemplate(sessionFactory);
    DetachedCriteria criteria = DetachedCriteria
            .forClass(Departments.class);

    if (!ascending) {
        criteria.addOrder(Order.desc("deptName"));
    } else {
        criteria.addOrder(Order.asc("deptName"));
    }

    return ht.findByCriteria(criteria);
}

Back To Top


Enter your email address to get our daily JOBS & INTERVIEW FAQ's Straight to your Inbox.

Make sure to activate your subscription by clicking on the activation link sent to your email


Enter your email address to get our daily JOBS & INTERVIEW FAQ's Straight to your Inbox.

Make sure to activate your subscription by clicking on the activation link sent to your email