使用本地时区存储的日期-Hibernate JPA
我已经看到了许多与我的问题相关的线程,但我无法找到解决我的问题的方法 我在日期类型的实体中有一个属性。它的定义是这样的使用本地时区存储的日期-Hibernate JPA,hibernate,date,jpa,timezone,Hibernate,Date,Jpa,Timezone,我已经看到了许多与我的问题相关的线程,但我无法找到解决我的问题的方法 我在日期类型的实体中有一个属性。它的定义是这样的 @Column(name="CREATION_DATETIME") @Temporal(TemporalType.TIMESTAMP) private Date creationDateTime 当我打印日期值时,它位于本地时区,这是可以接受的,因为日期中的toString()使用默认时区;这将是程序运行的时区。当存储在数据库中时,它存储本地时区值;但我希望它存储为原始值,而
@Column(name="CREATION_DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date creationDateTime
当我打印日期值时,它位于本地时区,这是可以接受的,因为日期中的toString()使用默认时区;这将是程序运行的时区。当存储在数据库中时,它存储本地时区值;但我希望它存储为原始值,而不进行任何时区转换。Hibernate在这里处理持久性。为什么会发生这种情况,如何解决
在此显示一个示例以明确我的问题日期2011-11-30T19:02:00+0000存储为11月30日01.02.00.000000000 PM。本地时区是CST,因此它执行-0600并存储它
谢谢
Sanjay如果您使用Hibernate映射
日期
对象,它将不带时区地存储。事实上,Date
表示时间上的一个瞬间,时区是不相关的,不存储
从数据库读回日期后,您可以使用日历
类将其转换为您想要的任何时区,但数据库中的原始日期基本上是UNIX时间(从1970年起的秒/毫秒数)
另见: