У меня проблема с отдыхом данных весны при обработке дат.Вкратце, это задерживает дату на один день.Например, если у меня 1111-11-11, он возвращается ко мне 1111-11-10.
Здесь есть несколько похожих сообщений в SO ( ex1 , ex2 , ex3 ), но ни один из них не решил проблему.
У меня есть объект с этим LocalDate
:
@Column(nullable=true)
private LocalDate birthDate;
У меня также есть этот репозиторий:
@RepositoryRestResource(collectionResourceRel = "person", path = "person")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long>{
}
Когда я сохраняю birthDate
в базе данных (я использую MySQL), он сохраняется правильно.Однако, когда я делаю этот запрос, например:
Person p = personRepo.findById(1L).get();
Дата выбирается с опозданием на один день (как в примере выше).Я попытался реализовать это предложение , то есть изменить LocalDate на Date и включить аннотацию Джексона, но это не работает.Я также попытался включить jackson-modules-java8
, но проблема все еще.
Теперь самая интригующая вещь.Поскольку я только тестировал, я включал дату 1111-11-11.Я изменил это на сегодняшнюю дату 2019-02-06.Тогда выборка работает!На этот раз, я думаю, что это была проблема с очень старыми датами.Таким образом, я попробовал, например, 1970-01-01, а весной вернулся 1969-12-31.Я понял, что если я включу в базу данных даты выше 1986-01-01, все будет работать нормально.Однако, если я добавлю что-нибудь ниже этого, я получу дату на один день позже.
Есть ли у кого-нибудь подсказка по этому вопросу?
Спасибо за ваше время!
РЕДАКТИРОВАТЬ: Я также проверил часовой пояс базы данных, и все в порядке!
+--------------------+---------------------+--------------------+
| @@GLOBAL.time_zone | @@session.time_zone | @@system_time_zone |
+--------------------+---------------------+--------------------+
| SYSTEM | SYSTEM | -02 |
+--------------------+---------------------+--------------------+
1 row in set (0,00 sec)