JPA使用Java8的LocalDateTime

前言

这篇文章主要介绍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
    10
    public class User {
    @Id
    @Column(name = "id", nullable = false, length = 20)
    private Long id;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    @Column(name = "gmt_create")
    private LocalDateTime gmtCreate;
    //省略get,set方法
    }

总结

博主一开始遇到了一个坑,我用的hibernate-java8版本为5.2.8.Final,结果报错了。后来发现这个版本的hibernate-core5.2.8.Final。后来改成对应的5.0.12.Final就正确了。

欢迎关注博主其他的文章。

感谢您的支持!

本文标题:JPA使用Java8的LocalDateTime

文章作者:yoga

发布时间:2017年12月02日 - 22:12

原始链接:https://yoga0521.github.io/2017/12/02/JPA使用Java8的LocalDateTime/

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。 转载请注明出处!