gpt4 book ai didi

hibernate - 使用本地时区存储的日期 - Hibernate JPA

转载 作者:行者123 更新时间:2023-12-01 06:42:41 25 4
gpt4 key购买 nike

我已经看到许多与我遇到的问题相关的主题,但我找不到解决我的问题的方法,

我在 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 并存储它。

谢谢
桑杰

最佳答案

如果您正在映射 Date对象与 Hibernate,它将被存储在没有时区的情况下。事实上,Date代表一个瞬间,时区无关紧要,不存储。

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

也可以看看:

  • Hibernate date conversion
  • What time zone does Hibernate use when it reads and writes a Java Calendar object to an SQL TIMESTAMP?
  • 关于hibernate - 使用本地时区存储的日期 - Hibernate JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8929783/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com