2012-03-16 34 views
2

我使用了以下休眠條件。如何在休眠投影結果上應用順序

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(); 

這將返回對象列表,並且對象具有兩個字段studentId和count(studentId)。我想按count(studentId)降序排列這個列表。我如何做這個休眠?

目前我正在

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

我想要得到它這個

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

解決方案: 這個sloves問題:)

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(); 

回答

3

由於沒有答案接受 - 我格式化和簡化你自己的解決方案有點:

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();