2013-05-04 2 views
5

이 코드는 Datetime 및 Count라는 두 항목의 목록을 제공합니다. 그러나 시간없이 날짜별로 그룹화해야합니다.시간없이 날짜별로 최대 절전 기준 그룹

누구나 내게 그것을 할 방법을 줄 수 있습니까? 감사!

2013년 4월 27일 11 : 08 : 결과

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

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 방법이 유용 할 수 있습니다. 이것은 DateTime 컬럼을 가지고 Date을 추출하는 SQL 함수 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')에있는 컬럼 *이 존재하지 않는다고 불평합니다. –