当您将日期分配给命名的 SQL 参数时,Hibernate 会自动将其转换为 GMT 时间。你如何让它在所有日期都使用当前服务器时区?
假设您有一个查询:
Query q = session.createQuery("from Table where date_field < :now");
q.setDate("now", new java.util.Date());
“now”将设置为 GMT 时间,而“new Date()”将获取您当前的服务器时间。
谢谢。
原文由 serg 发布,翻译遵循 CC BY-SA 4.0 许可协议
事实证明,Hibernate 不会自动将日期转换为 GMT,如果您使用
query.setDate()
它只会切断时间,所以如果您传递“2009-01-16 12:13:14”,它就会变成“2009” -01-16 00:00:00”。要考虑时间,您需要使用
query.setTimestamp("date", dateObj)
代替。