一尘不染

Joda时间DateTime错误地存储在数据库中

hibernate

我通过使用将JodaTime
DateTime字段存储到timestamptz列中org.jadira.usertype:usertype.jodatime:1.9。应用服务器的时区为+4。数据库服务器+9时区。new DateTime()会导致${currentTime+1hour}+9+9是时区(正确值为${currentTime+5hours)+9)。

我还没有找到任何相关主题。java.util.Date正确存储。

域对象具有以下映射属性:

static mapping = {
    dateCreated sqlType:'timestamptz'
}

如何正确存储DateTime?


阅读 205

收藏
2020-06-20

共1个答案

一尘不染

好。我已经花了8个小时来解决问题。如果您使用用户类型项目来保留JodaTime,则必须将class
databaseZone属性设置为PersistentDateTime等于当前应用程序服务器时区(不是数据库!)。

但是最好使用官方的hibernate支持。它解决了开箱即用的问题,因为默认情况下它用于java.utl.Date持久保存DateTimejava.util.Date正确保存

2020-06-20