2014-10-17 56 views
3

我有表與時間戳列,並希望創建Hibernate條件投影來分組我的結果只按日期從該時間戳列(數據庫中的結果是YYYY-MM-DD HH:mm: SS)。 我知道我必須使用Projection.sqlGroupProjection,但不是很安靜,確實很熱。休眠條件組的結果按日期從時間戳

另外,是否可以爲MySQL和Oracle編寫相同的投影?

回答

7

你可以嘗試使用內部date功能您sqlGroupProjection

Projections.sqlGroupProjection("date(timestampField) as myDate", "myDate", new String[] { "myDate" }, new Type[] { StandardBasicTypes.DATE }) 
+1

而這部分在Oracle上失敗,但在MySQL上工作。在Oracle上,它使用trunc(timestampField)編寫,但它給了我錯誤未知的標識符 – Alchnemesis 2014-10-17 11:00:50

+0

您是否正在使用myDate進行其他操作? (例如訂購) – JCalcines 2014-10-31 10:20:19

3

另外,如果你需要,按列進行排序,你需要創建一個別名,該列

Projections.alias(Projections.sqlGroupProjection(
    "trunc(timestampField) as myDate", "myDate", 
      new String[] { "myDate" }, 
      new Type[] { StandardBasicTypes.DATE }), "myDateOrder")) 

然後你可以使用:

criteria.addOrder(Order.asc("myDateOrder")); 

注:我的回答是基於nuno答案添加訂單功能。