весенний jpa аудит с localdate - PullRequest
0 голосов
/ 29 сентября 2018

Я хочу получить ежемесячный список, еженедельный список в соответствии с датой создания, но 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?

1 Ответ

0 голосов
/ 30 сентября 2018

Как вы узнали, LocalDate в настоящее время не поддерживается Spring Data Envers или фактически в Spring Data Commons, где находится соответствующий код.

Причина этого заключается в том, что эти поля меток времени предназначены дляну, будьте метками времени, т.е. указывайте моменты времени.LocalDate не делает этого.Проблема не столько в недостаточной точности, но в том, что LocalDate и его брат LocalDateTime не определяют порядок.Вполне возможно, что что-то, что произошло 1 января 1970 года, произошло после чего-то еще, что произошло 2 января 1970 года. Более подробно см. JavaDoc или http://blog.schauderhaft.de/2018/03/14/dont-use-localdatetime/

Обратите внимание, что LocalDateTimeподдерживается, но в основном потому, что это было реализовано до того, как мы поняли, что это неправильный тип для этой цели.

Я настоятельно рекомендую использовать Instant в качестве типа для полей такого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...