【问题标题】:Group by month in Hibernate Criteria queries在 Hibernate Criteria 查询中按月分组
【发布时间】:2016-01-23 12:05:02
【问题描述】:

我是 Hibernate Criteria Queries 的新手,我正在努力获取基于月份的计数。

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

如果我必须根据完成时间按月获取计数组。 我怎样才能做到这一点

【问题讨论】:

    标签: mysql hibernate hibernate-mapping hibernate-criteria


    【解决方案1】:

    请尝试以下代码

        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 中也添加月份,以便您可以检索该值。

    【讨论】:

    • 谢谢一百万,我还有一个疑问。有什么办法可以得到每个计数的月份名称
    • groupProperty 在结果中也返回属性。无需对外提及。
    • 请您现在验证一下。
    猜你喜欢
    • 1970-01-01
    • 2014-12-08
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多