Я пытаюсь сохранить в базе данных дату бронирования ресторана, но, несмотря на то, что дата, которую я отправляю, верна, гибернация сохраняет внутри базы данных дату за один день до даты, которую я отправила. Я не знаю почему ... это, вероятно, проблема с часовым поясом, но я не могу понять, почему ... часовые пояса не должны влиять на дату.
Вот мой файл свойств весенней загрузки:
spring:
thymeleaf:
mode: HTML5
encoding: UTF-8
cache: false
jpa:
database: MYSQL
hibernate:
ddl-auto: update
properties:
hibernate:
locationId:
new_generator_mappings: false
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
jdbc:
time_zone: UTC
datasource:
driver:
class: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/databaseName?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: username
password: **********
Я из Италии, поэтому мой часовой пояс такой:
- GMT / UTC + 1 час в стандартное время
- GMT / UTC + 2 часа в летнее время
В настоящее время мы UTC + 2 часа.
Объект, который я храню, это:
@Entity
public class Dinner {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long dinnerId;
private LocalDate date;
...
Контроллер, который я использую для перехвата запроса POST, таков:
@PreAuthorize("hasRole('USER')")
@PostMapping
public String createDinner(@RequestParam(value="dinnerDate") String dinnerDate, Principal principal, Model model){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse(dinnerDate, formatter);
dinnerService.createDinner(date);
return "redirect:/dinners?dinnerDate=" + dinnerDate;
}
, который вызывает метод службы createDinner , который вызывает метод Jpa save для хранения объекта.
Я использую тимилеф для обработки HTML-шаблонов.
Если я отправлю дату 30/6/2019 внутри базы данных, я получу 29/6/2019. Когда я получаю объект Dinner по дате, если я вставлю 30/6/2019, я получаю Dinner с датой 29/6/2019. Так что кажется, что весна сама обрабатывает дату странным образом ... учитывая какой-то часовой пояс, но я не знаю, как его отключить или обработать. Есть идеи?