【问题标题】:Grails Mapping LocalDateTime of Java 8 domain objects to GormGrails 将 Java 8 域对象的 LocalDateTime 映射到 Gorm
【发布时间】:2016-06-01 04:26:27
【问题描述】:

Java 8 提供了 java.time API。

我正在使用 grails 应用程序,我想将 java.time 用于我的域类的属性。

例如,我需要将 LocalDateTime 映射到构建在 Hibernate 之上的 GORM 上的 DATE/DATETIME。

如何保留我的映射?

我看到了一个解决方案,我可以使用 jadira,并为我的属性建立静态映射。

但是还有其他方法吗?

感谢任何帮助。

【问题讨论】:

    标签: hibernate grails java-8 persistence grails-orm


    【解决方案1】:

    您可以使用user type 映射。见the docs。这应该消除了单独显式映射所有实例的需要。

    为了更进一步,我会采用grails-joda-time 插件源并尝试制作jave.time 版本。甚至尝试制作(并提交拉取请求)一个支持joda-timejava.time 的版本。

    【讨论】:

      【解决方案2】:

      我没有使用过gorm,但如果我们只说hibernate(我想它应该适用),你可以走两条路。

      一,如果您正在使用或者如果您能够升级到休眠 5,那么您可以包含 hibernate-java8

      支持使用 Java8 特定的数据类型,例如任何 JSR 310 领域模型中的日期/时间类型。

      否则,您必须按照here 的说明编写自己的类型,并使用它,例如喜欢

      @Type(type="your.custom.LocalDateTimeUserType")
      private LocalDateTime date;
      

      最后,gorm 实现了JPA 规范,你可以实现一个converter

      【讨论】:

      • 我在 grails 3.0.10 上使用 groovy,所以我不确定是否可以将 Hibernate 更新到 5,还是我错了?
      • 对于您建议我的第二种方式,它是通过 Hibernate 而不是通过 Gorm 域对象到 sql 对象之间的实际映射。我会尝试看看它是否适用
      • 您可以在 Grails 3.0.10 上使用 Hibernate 5。您必须升级到 GORM 5,然后选择 Hibernate 5 进行实施。请参阅grails.github.io/grails-data-mapping/5.0.x/hibernate/manual/… 了解更多信息
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      相关资源
      最近更新 更多