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一切正常时.
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模块.
| 归档时间: |
|
| 查看次数: |
2881 次 |
| 最近记录: |