3

I used following hibernate criteria.

Criteria criteria = session.createCriteria(Student.class);
        ProjectionList projectionList = Projections.projectionList();
       projectionList.add(Projections.groupProperty("studentId"));
       projectionList.add(Projections.count("studentId"));
        criteria.setProjection(projectionList);
      return criteria.list();

This returns a list of objects and the objects have two fields, studentId and count(studentId). I want to sort this list by count(studentId) descending. How do I do this hibernate?

currently I am getting

{[1, 5], [2, 7], [3,4]} 

I want to get it this

{[2, 7], [1, 5], [3,4]}

solution: this sloves the issue :)

  Criteria criteria = session.createCriteria(Student.class);
            ProjectionList projectionList = Projections.projectionList();
           projectionList.add(Projections.groupProperty("studentId"));
           projectionList.add( Projections.alias(Projections.count("studentId"),"count"));
            criteria.setProjection(projectionList);
           criteria.addOrder(Order.desc(("count")));
            return criteria.list();
Romi
  • 4,833
  • 28
  • 81
  • 113

1 Answers1

4

Since there is no answer accepted - i formatted and simplified your own solution a bit:

Criteria criteria = session.createCriteria(Student.class);
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.groupProperty("studentId"));
projectionList.add(Projections.count("studentId"), "count");
criteria.setProjection(projectionList);
criteria.addOrder(Order.desc(("count")));
return criteria.list();
Minutis
  • 1,193
  • 1
  • 17
  • 47