具有Hibernate的Java 8 Time API使用毫秒/纳秒精度

时间:2018-05-12 20:37:35

标签: java hibernate spring-data-jpa

我有一个非常简单的实体,它使用新的Java 8 Time API。

[1:10]

要正确支持转换,请使用

@Entity
@Table(name = "event")
public class Event {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private long id;

    @Column(name = "time")
    private LocalDateTime time;

    // ommitted
}

但是,数据库中的记录保存为<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-java8</artifactId> <version>5.1.0.Final</version> </dependency> ,这会完全忘记2018-05-12 22:24:31的纳秒。我知道LocalTimeTimestamp都不能存储纳秒,但我需要至少毫秒的精度。有没有可能实现这个目标?

如果相关,我使用的是MySQL数据库。

1 个答案:

答案 0 :(得分:1)

将列类型更改为

DATETIME(6) 

由于DATETIME的整数性质,你的第二部分失去了 这里有关于该主题的https://dev.mysql.com/doc/refman/8.0/en/fractional-seconds.html

的MySQL文档

引用

  

DATETIME(FSP)

     

fsp值,如果给定,必须在0到6的范围内。值为0   表示没有小数部分。如果省略,则为默认值   精度为0 。 (这与标准SQL默认值6不同,for   与以前的MySQL版本兼容。)