2013-05-04 11 views
5

このコードは、日時とカウントの2つの項目のリストを私に提供します。しかし、私は時間のない日付でそれをグループ化する必要があります。時刻なしの日付による休止基準グループ

誰でも私に手掛かりを与える方法はありますか?ありがとう!

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メソッドが便利です。これにより、Dateという形式のDateTime列を抽出する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')の列が存在しないと文句を言います。 –