【问题标题】:Date stored with Local Time Zone - Hibernate JPA使用本地时区存储的日期 - Hibernate JPA
【发布时间】:2012-01-19 16:39:21
【问题描述】:

我看到了许多与我遇到的问题相关的线程,但我无法找到解决我的问题的方法,

我在 Date 类型的实体中有一个属性。它的定义是这样的,

@Column(name="CREATION_DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date creationDateTime

当我打印日期值时,它是在本地时区,这是可以接受的,因为 Date 中的 toString() 使用默认时区;这将是程序运行的时区。当存储在数据库中时,它存储的是本地时区值;但我希望它在没有任何时区转换的情况下存储原始值。 Hibernate 在这里处理持久性。为什么会发生这种情况,如何解决。?

在此处显示一个示例以明确我的问题,日期 2011-11-30T19:02:00+0000 存储为 30-NOV-11 01.02.00.000000000 PM。本地时区是 CST,因此它会执行 -0600 并存储它。

谢谢 桑杰

【问题讨论】:

标签: hibernate date jpa timezone


【解决方案1】:

如果您使用 Hibernate 映射 Date 对象,它将被存储没有时区。其实Date代表的是一个瞬间,时区是无关紧要的,不存储的。

从数据库读回日期后,您可以使用 Calendar 类将其转换为您想要的任何时区,但数据库中的原始日期基本上是 UNIX 时间(从 1970 年开始的秒数/毫秒数)。

另见:

【讨论】:

  • 是的,它没有 timezone 存储,但存储的值是本地时区值。在我的原始问题中添加了一个示例以使事情清楚。
猜你喜欢
  • 2019-06-15
  • 2010-10-05
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 2011-06-06
  • 2018-05-13
  • 2011-01-24
相关资源
最近更新 更多