前言
这篇文章主要介绍JPA如何正确使用LocalDateTime
与数据库datetime
属性进行映射。
对应的JPA版本是2.1以下的,由于JPA2.1发布时间早于Java8,所以不能直接支持Java8的新特新。Oracle最新发布的JPA2.2版本是支持新的时间API以及查询结果流等。
MyBatis
请查看MyBatis使用Java8的LocalDateTime。
解决方法
spring-boot-starter-data-jpa
的版本为1.5.9.RELEASE
,对应的hibernate-core
版本为5.0.12.Final
将数据保存到数据库
添加依赖
1
2
3
4
5<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.0.12.Final</version>
</dependency>添加注解,在获取
LocalDateTime
时,指定时间格式1
2
3
4
5
6
7
8
9
10public class User {
"id", nullable = false, length = 20) (name =
private Long id;
"yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8") (pattern =
"gmt_create") (name =
private LocalDateTime gmtCreate;
//省略get,set方法
}
总结
博主一开始遇到了一个坑,我用的hibernate-java8
版本为5.2.8.Final
,结果报错了。后来发现这个版本的hibernate-core
是5.2.8.Final
。后来改成对应的5.0.12.Final
就正确了。
欢迎关注博主其他的文章。