我在下面的一个项目中有一个查询,它使用oracle特定的东西。如何在HQL中重写它?
from HotAddressHibId a where a.expirationTsp >= trunc(SYSDATE)
答案 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();