在SPRING-BOOT中使用较新的hibernate或JPA 2.2 for Java 8 Date/Time?

mCs*_*mCs 1 spring hibernate jpa spring-boot jpa-2.2

不支持使用s pring-boot 1.5.10(因此当前)使用Java8 Date/Time,因为默认情况下此版本的Spring Boot使用它.要在覆盖版本的部分中实现此目的(Spring Boot 1.5.10). Hibernate 5.0.12.Finalpom.xml properties

<hibernate.version>5.2.12.Final</hibernate.version>
Run Code Online (Sandbox Code Playgroud)

问题: 启用Java8日期/时间来覆盖hibernate版本或以某种方式(如果是这样,如何?)的最佳方法是什么?将JPA 2.2用于SPRING_BOOT?

编辑随着休眠,5.0.x我不断得到:

引起:org.springframework.jdbc.datasource.init.ScriptStatementFailedException:无法执行URL [file:./ src/main/resources/db/h2/data-h2.sql]的SQL脚本语句#1:INSERT INTO预留(ID,RESERVATION_NAME,DATE_FROM,DATE_TO)VALUES(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语句:INSERT INTO预留(ID,RESERVATION_NAME,DATE_FROM,DATE_TO)VALUES(1,'res1',ParseDateTime('01 01 2001','d M yyyy'),ParseDateTime('02 01 2001','d M yyyy ")),

但是当使用5.2.12.Final一切正常时.

g00*_*00b 7

Hibernate 5.x已经支持Java 8 Date/Time API,但是在一个名为的单独工件中hibernate-java8.

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

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>5.0.12.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但是,自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模块.