【发布时间】:2020-09-24 05:01:43
【问题描述】:
我用
实例化一个日期对象new Date(),即当前系统时间。
但是当我使用 jpa entitymanger 将其合并到 MySQL 时, MySQL 正在显示不同的时间。顺便说一句,这是 maven 项目。
例如,在 java 中,日期是 Wed Jun 03 06:51:38 EDT 2020 在 MySQL 中是 2019-12-29 06:51:38 est
我注意到时区不同,但日期却大不相同。
有人可以帮我看看这是怎么回事吗?
代码如下:
Image image = new Image();
image.setDate(new Date()); //current system time
EntityManager em = EMFactory.getEMF().createEntityManager();
em.getTransaction().begin();
em.merge(image);
em.getTransaction().commit();
em.close();
那我去查MySQL,那一行显示的时间不同
作为参考,db 上的上下文设置是:
url="jdbc:mysql://localhost:3306/project?zeroDateTimeBehavior=convertToNull"
【问题讨论】:
-
你能分享一段代码来展示你的实体是什么样子的,以及代码是什么样子持久保存到 MySQL 的吗?此处没有足够的详细信息,无法重现该问题以供任何人帮助调试。
-
您的 MySQL 服务器上的时钟可能配置错误。
-
我认为我们没有机会从您提供的信息中分辨出来。 How to create a Minimal, Reproducible Example.
-
时区可能没有什么不同。例如,在这两种情况下都可能是 America/Toronto 或 America/New_York。这些时区在 12 月使用 EST,在 6 月使用 EDT。
-
您不应该编写隐式依赖于客户端、服务器或数据库的默认时区的代码。在代码中明确指定所需/预期的时区。您可能将日期时间值交换为哑字符串而不是智能对象。 JPA 和 Hibernate 已更新为交换现代 java.time 对象。我们无法进一步诊断您的问题,因为您忽略了提供完整的详细信息和代码。编辑您的问题以提供更多信息。投票结束当前编写的此问题。
标签: java mysql hibernate maven jpa