将 SQL 查询转换为 Hibernate 查询
Posted
技术标签:
【中文标题】将 SQL 查询转换为 Hibernate 查询【英文标题】:Converting SQL query to Hibernate query 【发布时间】: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)
看看是否有帮助。
【参考方案1】:
尝试使用setParameter
,而不是setDate
。
来自this link about HQL dates:
"setDate" 将截断 HQL 日期值并忽略小时、分钟、秒。
使用setParameter
会将值解释为您由:variable
指示的参数。
【讨论】:
以上是关于将 SQL 查询转换为 Hibernate 查询的主要内容,如果未能解决你的问题,请参考以下文章
无法将 MS Sql 查询转换为 Hibernate @Query