这个Oracle特定查询的HQL等价物是什么?

时间:2011-04-28 03:23:40

标签: java hibernate

我在下面的一个项目中有一个查询,它使用oracle特定的东西。如何在HQL中重写它?

from HotAddressHibId a  where a.expirationTsp >= trunc(SYSDATE)

3 个答案:

答案 0 :(得分:4)

trunc()sysdate()都在Hibernate dialect for Oracle中注册为函数,因此您只需执行此操作:

from HotAddressHibId a  where a.expirationTsp >= trunc(sysdate()) 

答案 1 :(得分:1)

"from HotAddressHibId a where a.expirationTsp >= ?"

然后准备Date对象剥离小时,分钟,秒和毫秒,并绑定到查询参数。

请注意,如果Oracle位于其他时区,行为可能会发生变化。

答案 2 :(得分:0)

您可以使用带有sqlRestriction的Hibernate Criteria查询:

List elements = session.createCriteria(HotAddressHibId.class)
    .add( Restrictions.sqlRestriction("expiration_tsp >= trunc(SYSDATE)" )
    .list();