我想根据创建日期获得每月列表,每周列表,但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;
但是createdAt
和updatedAt
仅支持java.util.Date
。为什么它不支持java.time.LocalDate
?
答案 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
作为此类字段的类型。