У меня проблема с отдыхом данных spring, когда я обрабатываю даты. Вкратце, это перенос даты на один день. Например, если у меня есть 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 to Date и включить аннотацию Джексона, но это не работает. Я тоже пытался включить jackson-modules-java8
, но проблема осталась.
Теперь самое интригующее. Поскольку я просто тестировал, я включил дату 1111-11-11. Я изменил это на сегодняшнюю дату 2019-02-06. Тогда выборка работает! В это время, я думаю, если это была проблема с очень старыми датами. Таким образом, я попробовал, например, 1970-01-01, а весной вернулся 1969-12-31. Я понял, что если я включаю в базу данных даты выше 1986-01-01, все работает нормально. Однако, если я включу что-нибудь ниже этого, я получу дату на один день позже.
Есть ли у кого-нибудь намек на эту проблему?
Спасибо за ваше время!
EDIT: я также проверил часовой пояс моей базы данных, и все в порядке!
+--------------------+---------------------+--------------------+
| @@GLOBAL.time_zone | @@session.time_zone | @@system_time_zone |
+--------------------+---------------------+--------------------+
| SYSTEM | SYSTEM | -02 |
+--------------------+---------------------+--------------------+
1 row in set (0,00 sec)
LocalDate
не должно быть проблем с часовым поясом. Но иногда некоторые преобразования в поиске все равно вносят некоторые изменения. Каков тип данных вашего столбца базы данных в MySQL? А вы в каком часовом поясе? - person Ole V.V.   schedule 06.02.2019date
, и я нахожусь в Бразилии, в настоящее время это UTC -2 из-за летнего времени - person André Pacheco   schedule 07.02.2019