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

新手上路,请多包涵

当您将日期分配给命名的 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 许可协议

阅读 804
2 个回答

事实证明,Hibernate 不会自动将日期转换为 GMT,如果您使用 query.setDate() 它只会切断时间,所以如果您传递“2009-01-16 12:13:14”,它就会变成“2009” -01-16 00:00:00”。

要考虑时间,您需要使用 query.setTimestamp("date", dateObj) 代替。

原文由 serg 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您需要一个 时区 同步值,您可以在 HQL 中使用 now() 。另外我建议你使用 Joda 库。它有一个休眠插件模块。

原文由 Maksim 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题