Я отображаю столбец TIME
базы данных MySQL в Hibernate (5.4.6.Final
) как класс java.time.LocalTime
. Это объявление преобразования в сущность:
@Column(name = "TIMEVAL")
public LocalTime TIMEVAL;
Столбец в базе данных имеет значение 00:30:00
, однако Hibernate создает экземпляр TIMEVAL
со значением 01:30:00
.
Я думал о разнице часовых поясов (игнорируя тот факт, что у типа данных TIME нет часового пояса) между сервером и подключением гибернации, но я настраивал каждое подключение и сервер как UTC.
И, выполнив запросы:
SELECT @@global.time_zone;
SELECT @@session.time_zone;
Результатом сеанса Hibernate и сервера были все +00:00
.
После конфигурации Hibernate:
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
spring.datasource.url=jdbc:mysql://localhost:3306/..?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&allowMultiQueries=true
ИВот конфигурация MySQL:
default-time-zone=+00:00
Я пробовал также:
- Указание столбца MySQL как
VARCHAR(8)
, но Hibernate всегда получает 01:30:00
; - Изменение типа данных Entity на
Duration
, но Hibernate выдает ошибку, говоря, что не может сопоставить ВРЕМЯ с java.lang.Long.
Что мне нужноизменить, чтобы Hibernate создал экземпляр LocalTime
со значением столбца базы данных?