【发布时间】:2018-10-12 05:41:39
【问题描述】:
我目前正在使用 Hibernate 和 WildFly 开发一个项目。我使用的数据库是 mariaDB。
当我将java.time.Instant 插入数据库时,JPA 对插入的时间戳应用两个小时(在 java 代码中始终为 UTC)。
我尝试在standalone.conf (Java Opts) 和命令行参数中使用-Duser.timezone=UTC 启动WildFly。管理控制台显示了这个时区,但所有日志输出和数据库输入都在我的系统时区 (+2) 中。当我将 Windows 时区设置为 UTC 时,奇怪的行为停止并且数据库中的时间是正确的。
我还尝试设置休眠属性 <property name="hibernate.jdbc.time_zone" value="UTC"/> 和我的 mariaDB SET GLOBAL time_zone = "+00:00",但效果不佳。
我在这里缺少什么?
【问题讨论】:
-
假设您在数据库中使用
timestamp类型,很可能正在为连接设置 session 时区。请参阅文档中的 Connection Time Zones。 -
这应该用 jbdc.time_zone 修复 - 这也不起作用......
标签: hibernate jpa timezone mariadb wildfly