使用较新的Hibernate或JPA 2.2用于Java 8日期/弹簧靴中的时间



使用s pring-boot 1.5.10(当前(使用java8日期/时间为不支持,因为默认情况下,此版本的Spring Boot使用Hibernate 5.0.12.Final。为了实现此目标( Spring Boot 1.5.10 (在pom.xml properties部分中覆盖了版本。

<hibernate.version>5.2.12.Final</hibernate.version>

问题:启用Java8日期/时间覆盖Hibernate版本或某种程度上(如果是这样的话(的最佳方法是什么?

编辑使用Hibernate 5.0.x,我继续得到:

由: org.springframework.jdbc.datasource.init.scriptStattatementFailedException: 无法执行URL的SQL脚本语句#1 [文件:./src/main/resources/db/h2/data-h2.sql]:插入 预订(ID,recervation_name,date_from,date_to(值(1, 'res1',parseDateTime('01 01 2001','d m yyyy'(,parseDateTime('02 01 2001','d m yyyy'((,(2,'res1',parseDateTime('01 02 2001','d M yyyy'(,parseDatetime('02 02 2001','d m yyyy'(,(3,'res3', ParseDateTime('01 03 2001','d M Yyyy'(,ParseDateTime('02 03 2001',, 'd m yyyy'((,(4,'res4',parseDateTime('01 04 2001','d m yyyy'(, ParseDateTime('02 04 2001','d m yyyy'(,(5,'res5', ParseDateTime('01 05 2001','d M Yyyy'(,ParseDateTime('02 05 2001',, 'd m yyyy'((;嵌套的异常是org.h2.jdbc.jdbcsqlexception: heksadecymalny string znieparzystąliczbąZnaków:" 2001-01-01 00:00:00.0"具有奇数字符的十六进制字符串: " 2001-01-01 00:00:00.0";SQL语句:插入预订(ID, recervation_name,date_from,date_to(value(1,'res1', ParseDateTime('01 01 2001','D M Yyyy'(,ParseDateTime('02 01 2001',, ((,

但是,当使用5.2.12.Final时,一切都在工作。

Hibernate 5.x已经支持Java 8日期/时间API,但在单独的工件中称为hibernate-java8

使用Maven,您可以像这样包含它:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>5.0.12.Final</version>
</dependency>

但是,由于Hibernate 5.2.x,Hibernate的基线Java版本是Java 8,因此不再需要为Java 8日期/时间支持保留单独的模块。这就是为什么现在将其合并到hibernate-core中的原因,如迁移指南中的记录:

Hibernate 5.2是使用Java 8 JDK构建的,需要在运行时Java 8 JRE(我们正在研究Java 9是否也可以工作(。这有许多含义:

  • Hibernate-Java8模块已合并到Hibernate-Core中,Java 8日期/时间类型现在得到了本地支持。

因此,要回答您的问题,对于Hibernate 5.0.x和Hibernate 5.1.x,支持新的日期/时间API的官方方法是使用hibernate-java8模块。

Hibernate 5添加的功能之一是Java 8类(如日期和时间API(的支持,因此您可以将.jar添加到pom.xml

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>5.1.0.Final</version>
</dependency>

我遇到了相同的问题,并使用 spring-boot-parent (最终使用最新1.5.x版本选择:1.5.16.Release(和 spring-boot-starter-data-jpa 版本无济于事。

最终有帮助的是,与 5.1.x 版本一起添加了对hibernate-java8的依赖性。正如OP正确指示的那样,默认情况下,Spring Boot已经带来了此依赖性,但是较低(== Hibernate.version(版本。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>5.1.0.Final</version><!--$NO-MVN-MAN-VER$-->
</dependency>

相关内容

  • 没有找到相关文章

最新更新