我有一个带有timestamp列的表,并且想要创建Hibernate条件投影,仅根据该时间戳列中的日期对结果进行分组(数据库中的结果为YYYY-MM-DD HH:mm:ss)。
我知道我必须使用Projection.sqlGroupProjection
,但不要确定这样做很安静。
此外,是否可以为MySQL和Oracle编写相同的投影?
答案 0 :(得分:7)
您可以尝试使用date
中的sqlGroupProjection
功能:
Projections.sqlGroupProjection("date(timestampField) as myDate", "myDate", new String[] { "myDate" }, new Type[] { StandardBasicTypes.DATE })
答案 1 :(得分:4)
此外,如果您需要按该列排序,则需要为该列创建别名
Projections.alias(Projections.sqlGroupProjection(
"trunc(timestampField) as myDate", "myDate",
new String[] { "myDate" },
new Type[] { StandardBasicTypes.DATE }), "myDateOrder"))
然后你可以使用:
criteria.addOrder(Order.asc("myDateOrder"));
注意:我的回答是基于 nuno 回答添加订单功能。