2013-05-04 48 views
5

此代码给我列出了两个项目日期时间和计数。但我需要按时间对它进行分组。休眠标准按时间按日期分组

任何人都可以给我一个线索如何做到这一点?谢谢!

Criteria criteria = getSession().createCriteria(Parcel.class); 

    ProjectionList projectionList = Projections.projectionList(); 

     projectionList.add(Projections.groupProperty("dateCreated")); 
     projectionList.add(Projections.rowCount()); 

    criteria.setProjection(projectionList); 


    List<Object[]> results = criteria.list(); 

结果:

2013年4月27日11:08:00.0 | 32

2013-04-27 11:10:00.0 | 5

2013-04-28 15:03:27.0 | 12

我需要:

2013-04-27 | 37

2013-04-28 | 12

回答

12

您可能会发现Projections#sqlGroupProjection方法有用。它允许您使用SQL功能date(),该功能从DateTime列中提取Date。基本上,而不是调用

projectionList.add(Projections.groupProperty("dateCreated")); 

使用

projectionList.add(Projections.sqlGroupProjection("date(dateCreated) as createdDate", "createdDate", new String[] { "createdDate" }, new Type[] { StandardBasicTypes.DATE })); 
+0

伟大的作品,但我曾与列名('date_created'在更换实体领域('dateCreated'在你的例子)的名称你的例子)。如果我不这样做,它会抱怨列*小写*(?)(在您的示例中为'datecreated')不存在。 – 2016-01-18 12:58:32