不支持使用spring-boot1.5.10
(所以当前)使用Java8 Date/Time,因为默认情况下这个版本的Spring Boot使用Hibernate 5.0.12。最终的
。要实现这一点(Spring Boot 1.5.10),请在pom.xml
属性
部分覆盖该版本。
<hibernate.version>5.2.12.Final</hibernate.version>
问:启用Java8日期/时间覆盖hibernate版本或以某种方式覆盖hibernate版本的最佳方法是什么(如果是,那么如何实现?)是否将JPA 2.2用于SPRING\u引导?
编辑与Hibernate5.0. x
我不断得到:
原因:组织。springframework。jdbc。数据源。初始化。ScriptStatementFailedException:未能执行URL[文件:./src/main/resources/db/h2/data-h2.SQL]的SQL脚本语句#1:插入保留(ID、RESERVATION\u NAME、DATE\u FROM、DATE\u to)值(1,“res1”,ParseDateTime('01 01 2001','d M yyyyy'),ParseDateTime('02 01 2001','d M yyyyy'),(2,“res1”,ParseDateTime('01 02 2001','d M yyyyyy'),(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 YYYYYY”)、ParseDateTime(“02 05 2001”、“d M YYYYYY”))));嵌套异常为org。h2.jdbc。JdbcSQLException:Heksadecymalny字符串z nieparzystąliczbąznaków:“2001-01-01 00:00:00.0”十六进制字符串,奇数字符:“2001-01-01 00:00:00.0”;SQL语句:在保留(ID、RESERVATION\u NAME、DATE\u FROM、DATE\u TO)中插入值(1,“res1”、ParseDateTime('01 01 2001”,“d M yyyy”)、ParseDateTime('02 01 2001”,“d M yyyy”),
但当使用<代码>5.2.12时。最终,一切正常。
我也遇到了同样的问题,并尝试了spring-boot-父版本(最终选择使用最新的1.5. x版本:1.5.16。发布)和spring-boot-starter-data-jpa版本没有帮助。
最终起到了帮助作用的是,添加了对hibernate-java8
的依赖,使用了5.1。X版本。正如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>
Hibernate 5添加的特性之一是支持Java 8类,如日期和时间API,因此您可以添加。jar
到您的pom。xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.1.0.Final</version>
</dependency>
Hibernate5。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 5.0. x和Hibernate 5.1. x,支持新日期/时间API的官方方法是使用hibernate-java8
模块。
我需要在我的MySQL数据库中进行批量插入(近10000个)。我正在使用JPA/Hibernate和spring Boot。我从hibernate文档中读到了在hibernate中执行大容量插入/更新,我认为我的代码不能正常工作,因为它顺序地插入hibernate查询,而不是在批处理插入中执行它们。下面是我的代码。我是不是漏掉了什么? 这是我的数据源配置。 我是不是漏掉了什么? 请帮帮忙。
是否可以在程序运行时更新数据库架构?我使用过ddl自动更新,但它有时不会添加或删除列,所以我必须编辑为,然后返回进行架构更新。为什么它不一致地更新架构,我宁愿在接近生产之前不使用迁移工具。因此,理想情况下,当我向实体添加字段或删除它时,它应该在下次运行程序时尝试更新方案。
问题内容: 经过大量的google’ing和PHP手动阅读之后,我真的很想在日期时间加上X分钟,但似乎一无所获。 我的日期时间格式是: : 要添加的分钟数只是0到59之间的数字 我希望输出与添加分钟的输入格式相同。 有人可以给我一个有效的代码示例,因为我的尝试似乎并没有带我去任何地方? 问题答案: 在ISO 8601标准的持续时间 是在形式的串,其中所述部件用指示的持续时间有多长一个数字值代替。
我需要访问现有的MySQL数据库,该数据库使用列存储时间戳: 现在我更喜欢使用或实例而不是整数,所以我试图让Hibernate直接转换值。不幸的是,Hibernate不会识别这样注释的列: 或者像这样: 这确实会在将来返回类似。如何使Hibernate convert列正确转换,从而不必在getter和setter中转换它们?
问题内容: 我们有一个Oracle日期列。首先,我们在Java / Hibernate类中使用。这可行,但是保存时似乎没有在数据库中存储任何时间信息,因此我将Java数据类型更改为Timestamp。现在我们得到这个错误: springframework.beans.factory.BeanCreationException:在类路径资源[margin-service- domain -confi
我的程序使用日期来检查工程师何时访问过机器。唯一的问题是日期并不是最新的。机器显示的日期和时间是机器启动的准确时间。当按钮被点击时就不会了。任何帮助都会有帮助。 代码: