Неправильная LocalDate хранится в спящем режиме - PullRequest
0 голосов
/ 23 июня 2019

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

Вот мой файл свойств весенней загрузки:

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. Так что кажется, что весна сама обрабатывает дату странным образом ... учитывая какой-то часовой пояс, но я не знаю, как его отключить или обработать. Есть идеи?

...