【问题标题】:Hibernate criteria group results by date from timestamp休眠标准组结果按日期从时间戳
【发布时间】:2014-12-12 20:27:22
【问题描述】:

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

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

【问题讨论】:

    标签: java mysql oracle hibernate date


    【解决方案1】:

    另外,如果您需要按该列排序,则需要为该列创建一个别名

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

    那么你可以使用:

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

    注意:我的回答是基于 nuno 回答添加订单功能。

    【讨论】:

      【解决方案2】:

      您可以尝试在sqlGroupProjection 中使用date 函数:

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

      【讨论】:

      • 这部分在 Oracle 上失败,但在 MySQL 上有效。在 Oracle 上,它用 trunc(timestampField) 编写,但它给了我错误 uknown identifier
      • 您是否将 myDate 用于其他用途? (例如订购)
      猜你喜欢
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 2019-05-28
      • 2016-12-10
      • 2016-06-12
      • 2014-04-05
      相关资源
      最近更新 更多