一尘不染

如何为当前时区的Hibernate查询分配日期参数?

hibernate

将日期分配给命名的SQL参数时,Hibernate会自动将其转换为GMT时间。如何使所有日期都使用当前服务器时区?

假设您有一个查询:

Query q = session.createQuery("from Table where date_field < :now");
q.setDate("now", new java.util.Date());

“现在”将设置为GMT时间,而“新Date()”将获取您当前的服务器时间。

谢谢。


阅读 244

收藏
2020-06-20

共1个答案

一尘不染

事实证明,Hibernate不会自动将日期转换为格林尼治标准时间,如果您使用query.setDate(),它只会缩短时间,因此,如果您传递“
2009-01-16 12:13:14”,它将变为“ 2009-01-16 00:00” :00“。

为了节省时间,您需要query.setTimestamp("date", dateObj)改用。

2020-06-20