Grails 3 和 Java 8 时间支持

Grails 3 and Java 8 time support

在 grails 3 应用程序中,我看到新的 java.time 类 被保存到数据库中。动态查询和创建条件有效。但是,我想知道是否有更好的方法将这些时间数据存储到数据库中。当我查看数据库时,我看到了一些二进制数据,它似乎只是序列化了时间对象。

是否有与 joda-time-plugin 类似的插件,或者有什么方法可以为 java.time 类 配置数据库映射?

Edit: Grails 3.1.1 has hibernate 5 so this is not an issue anymore...

Grails

我终于找到了解决办法。首先,hibernate 5 实现了持续 java 8 次(https://hibernate.atlassian.net/browse/HHH-8844)。但是,grails 3 使用的是 hibernate 4,我还没有发现任何在 grails 中升级 hibernate 的计划。

有一个 java 8 时间休眠用户类型(jadira 扩展包)的实现,可以像在 joda 时间插件中一样使用(参见 http://gpc.github.io/joda-time/guide/persistence.html)。对我来说,只有 3.1.0.GA 及更低版本有效。

build.gradle

dependencies {
    compile "org.jadira.usertype:usertype.extended:3.1.0.GA"
}

application.groovy

grails.gorm.default.mapping = {
    "user-type" type: org.jadira.usertype.dateandtime.threeten.PersistentInstantAsMillisLong, class: java.time.Instant
}