在Hibernate Criteria查询中按月分组

时间:2015-10-23 20:40:03

标签: mysql hibernate hibernate-mapping hibernate-criteria

我是Hibernate Criteria Queries的新手,我很难根据月份来计算。

   session.createCriteria(Task.class)                                                                           
  .add(Restrictions.eq("completed", true))                     
  .add(Restrictions.in("site", sites))  
  .setProjection(Projections.rowCount()).uniqueResult();
  //group by "completedTime"    

如果我必须根据completedTime获得计数组按月。 我怎样才能实现这个目标

1 个答案:

答案 0 :(得分:0)

请尝试以下代码

    Criteria criteria = session.createCriteria(Task.class);
    criteria.add(Restrictions.eq("completed", true));                     
    criteria.add(Restrictions.in("site", sites));

    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.rowCount());
    projectionList.add(Projections.groupProperty("month"));

    criteria.setProjection(projectionList);
    criteria.addOrder(Order.asc("completedTime"));

您需要创建projectionList以在其中添加投影列。

编辑1

projectionList.add(Projections.property("month"));

也可以在projectionList中添加月份,以便您可以检索该值。