我有无法解决的问题。我正在使用 Hibernate 4.3.9 Final 和 hibernate-java8 5.0.0.CR3 来处理 jdk8 time。在我的映射文件中,我有类型为 org.hibernate.type.InstantType 的“actualDate”。我将其以日期时间格式存储在数据库中。当我创建这个 java.time.Instant 时,我使用 ZoneId 传递给我的对象。创建 Instant 之后,我将其保存到数据库端,一切正常,但是当我从数据库读取时,Hibernate 这次发生了变化。例如,我有 ZoneId“华沙/波兰”,我存储在数据库值“2015-07-31 09:10:00”中,我在数据库中看到该值。但当我读到它时,它变成了“2015-07-31 07:10:00”。我的意思是,当我读取这个值并将其分配到我的代码中时,它会发生变化。有谁知道为什么吗?
最佳答案
“2015-07-31 07:10:00”是“2015-07-31 09:10:00”的 UTC 转换,因为华沙/波兰与 UTC 相差 +2 小时。
如果您有 DateTimeZone,您可以使用如下所示的调用
public static DateTime convertUTCToDateTimeZone(DateTime dateTime, DateTimeZone timeZone) {
return dateTime.toDateTime(DateTimeZone.UTC).toDateTime(timeZone);
}
这对我有用,但当然我对你们的系统一无所知。
祝你好运。
关于java - 为什么Hibernate要改变DataBase中存储的DateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748292/