Hibernate条件组按日期从时间戳开始

时间:2014-10-17 09:23:25

标签: java mysql oracle hibernate date

我有一个带有timestamp列的表,并且想要创建Hibernate条件投影,仅根据该时间戳列中的日期对结果进行分组(数据库中的结果为YYYY-MM-DD HH:mm:ss)。 我知道我必须使用Projection.sqlGroupProjection,但不要确定这样做很安静。

此外,是否可以为MySQL和Oracle编写相同的投影?

2 个答案:

答案 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 回答添加订单功能。