2013-05-04 7 views
5

Questo codice mi fornisce un elenco di due elementi datetime e count. Ma ho bisogno di raggrupparlo per data senza tempo.Sospendere il gruppo di criteri per data senza orario

Qualcuno mi può dare un indizio come farlo? Grazie!

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

Risultato:

2013-04-27 11: 08: 00.0 | 32

2013-04-27 11: 10: 00,0 | 5

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

Ho bisogno di:

2013-04-27 | 37

2013-04-28 | 12

risposta

12

Si possono trovare Projections#sqlGroupProjection metodo utile. Ti consente di utilizzare una funzione SQL date() che estrae Date nella colonna DateTime. In sostanza, invece di chiamare

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

uso

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

Funziona alla grande, ma ho dovuto sostituire il nome del campo entità ('dateCreated' nel tuo esempio) con il nome della colonna (' date_created' in il tuo esempio). Se non lo faccio, si lamenta che la colonna * in minuscolo * (?) ('Datecreated' nel tuo esempio) non esiste. –

Problemi correlati