2015-07-21 146 views
4

我需要帮助将一些sql转换为hibernate sql。将SQL查询转换为Hibernate查询

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 

但是,这是行不通的。错误表示这是一个hql错误。

+0

为您只使用一个表,尝试不使用表的别名。 –

+0

我仍然得到相同的错误,如果我没有表别名。 –

+0

尝试'GROUP BY小时(时间)',看看是否有帮助。 – knittl

回答

0

而不是使用setDate的请尝试使用setParameter

this link about HQL dates:

“的setDate” 将截断HQL日期值,并忽略时,分,秒。

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