Spring JPA审计与localdate

时间:2018-09-29 08:24:24

标签: spring-boot spring-data-jpa

我想根据创建日期获得每月列表,每周列表,但JPA不支持LocalDate。 我的代码是这样的:

UserDao

List<User> findByCreatedAtBetween(LocalDate start, LocalDate end);

UserEntity

@Column(nullable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
private LocalDate createdAt;

@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
@LastModifiedDate
private LocalDate updatedAt;

但是createdAtupdatedAt仅支持java.util.Date。为什么它不支持java.time.LocalDate

1 个答案:

答案 0 :(得分:0)

您发现LocalDate目前不受Spring Data Envers的支持,或者实际上不受相关代码所在的Spring Data Commons的支持。

这样做的原因是,这些时间戳字段旨在用作时间戳记,即指定时间点。 LocalDate不会这样做。问题不仅仅在于缺乏准确性,还在于LocalDate及其同级LocalDateTime没有定义顺序。很有可能在1970年1月1日之后发生的事情发生在1970年1月2日之后发生的事情。有关更多详细信息,请参考JavaDoc或http://blog.schauderhaft.de/2018/03/14/dont-use-localdatetime/

请注意,支持LocalDateTime,但这主要是因为在我们确实意识到使用该类型是错误的类型之前就已经实现了该功能。

我强烈建议使用Instant作为此类字段的类型。