2013-05-04 3 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-04-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

ID: 2013-04-28 | 12

ответ

12

Вы можете найти Projections#sqlGroupProjection метод полезный. Это позволяет вам использовать функцию SQL date(), которая извлекает Date в виде столбца DateTime. В принципе, вместо вызова

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

использование

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

прекрасно работает, но я должен был заменить имя поля объекта ('dateCreated' в вашем примере) с именем столбца (' date_created' в ваш пример). Если я этого не делаю, он жалуется, что столбец * в нижнем регистре * (?) ('Datecreated' в вашем примере) не существует. –