Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用本地时区存储的日期-Hibernate JPA_Hibernate_Date_Jpa_Timezone - Fatal编程技术网

使用本地时区存储的日期-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年起的秒/毫秒数)

另见:

是,存储时不带时区,但存储的值为本地时区值。在我的原始问题中添加了一个示例来说明问题。您如何知道它是以这种方式存储的,而不仅仅是在查询数据库时以这种方式显示?这也取决于您使用的数据库