【问题标题】:Converting SQL query to Hibernate query将 SQL 查询转换为 Hibernate 查询
【发布时间】:2015-10-10 06:31:42
【问题描述】:

我需要帮助将一些 sql 转换为休眠 sql。

SQL:

String sql = "select time, hour(time) as hour, minute(time) as minute "
           + "from db where time >= DATE_ADD(now(), INTERVAL -24 HOUR) "
           + "group by 2 order by time LIMIT 500";

我使用 SQLQuery 添加标量。我为 HQL 试过这个:

String hql = "select time, hour(time), minute(time) from db as O "
           + "where O.time >= :time group by 2 order by O.time";

Query query = session.createQuery(hql);
query.setDate("time", calend.getTime()); //calend is a Calendar object

但是,这不起作用。 Error 说这是一个 hql 错误。

【问题讨论】:

  • 因为您只使用一个表,请尝试不使用表别名。
  • 如果我在没有表别名的情况下执行此操作,我仍然会遇到同样的错误。
  • 试试GROUP BY hour(time) 看看是否有帮助。

标签: mysql sql hibernate hql


【解决方案1】:

尝试使用setParameter,而不是setDate

来自this link about HQL dates:

"setDate" 将截断 HQL 日期值并忽略小时、分钟、秒。

使用setParameter 会将值解释为您由:variable 指示的参数。

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2017-04-07
    相关资源
    最近更新 更多