Проверка схемы завершается неудачно с Hibernate 6 и ZonedDateTime, а также с меткой времени типа столбца с SQL Server и ⇐ JAVA
Проверка схемы завершается неудачно с Hibernate 6 и ZonedDateTime, а также с меткой времени типа столбца с SQL Server и
Мы перенесли существующее приложение весенней загрузки на Spring 3.2.1 с Hibernate 6.4.1 (используя SQL Server и PostgreSQL в качестве вариантов сохранения).
При запуске приложения мы получаем следующую ошибку, которая работала задолго до обновления:
Проверка схемы: обнаружен неправильный тип столбца в столбце [метка времени] в таблице [action_log]; найдено [метка времени (Types#BINARY)], но ожидается [datetimeoffset(6) (Types#TIMESTAMP_UTC)]
Столбец определяется как:
СОЗДАТЬ ТАБЛИЦУ action_log ( action_log_id bigint НЕ НУЛЬ, временная метка NOT NULL, ... ПЕРВИЧНЫЙ КЛЮЧ (action_log_id) ); Сущность Java как:
@Entity @Table(name = "action_log") @SequenceGenerator(name = "action_log_id_generator", последовательностьName = "action_log_id_seq") публичный класс ActionLogEntity { @Setter(AccessLevel.PRIVATE) @Идентификатор @GeneratedValue (стратегия = GenerationType.SEQUENCE, генератор = «action_log_id_generator») @Column(name = "action_log_id") @TimeZoneStorage частный длинный идентификатор; @Не ноль @Column(name = «метка времени», значение null = false, обновляемое = false) частная временная метка ZonedDateTime; ... } Мы знаем, что в Hibernate 6 обработка значений часового пояса была улучшена и что можно либо индивидуально установить тип @TimeZoneStorage(TimeZoneStorageType.NORMALIZE_UTC), либо определив поведение глобально с помощью hibernate.timezone.default_storage=NORMALIZE_UTC.
Итак, мы опробовали следующую конфигурацию:
# Сохраняем все в формате UTC Spring.jpa.properties.hibernate.jdbc.time_zone=UTC Spring.jpa.properties.hibernate.timezone.default_storage=NORMALIZE_UTC То же самое происходит и с datetime2:
Проверка схемы: обнаружен неправильный тип столбца в столбце [метка времени] в таблице [action_log]; найдено [datetime2 (Types#TIMESTAMP)], но ожидается [datetimeoffset(6) (Types#TIMESTAMP_UTC)].
Вопрос: Как мы можем настроить Hibernate так, чтобы он принимал столбец типа timestamp для SQL Server и удалял всю информацию о часовом поясе, поскольку мы все равно храним время в формате UTC?
Мы перенесли существующее приложение весенней загрузки на Spring 3.2.1 с Hibernate 6.4.1 (используя SQL Server и PostgreSQL в качестве вариантов сохранения).
При запуске приложения мы получаем следующую ошибку, которая работала задолго до обновления:
Проверка схемы: обнаружен неправильный тип столбца в столбце [метка времени] в таблице [action_log]; найдено [метка времени (Types#BINARY)], но ожидается [datetimeoffset(6) (Types#TIMESTAMP_UTC)]
Столбец определяется как:
СОЗДАТЬ ТАБЛИЦУ action_log ( action_log_id bigint НЕ НУЛЬ, временная метка NOT NULL, ... ПЕРВИЧНЫЙ КЛЮЧ (action_log_id) ); Сущность Java как:
@Entity @Table(name = "action_log") @SequenceGenerator(name = "action_log_id_generator", последовательностьName = "action_log_id_seq") публичный класс ActionLogEntity { @Setter(AccessLevel.PRIVATE) @Идентификатор @GeneratedValue (стратегия = GenerationType.SEQUENCE, генератор = «action_log_id_generator») @Column(name = "action_log_id") @TimeZoneStorage частный длинный идентификатор; @Не ноль @Column(name = «метка времени», значение null = false, обновляемое = false) частная временная метка ZonedDateTime; ... } Мы знаем, что в Hibernate 6 обработка значений часового пояса была улучшена и что можно либо индивидуально установить тип @TimeZoneStorage(TimeZoneStorageType.NORMALIZE_UTC), либо определив поведение глобально с помощью hibernate.timezone.default_storage=NORMALIZE_UTC.
Итак, мы опробовали следующую конфигурацию:
# Сохраняем все в формате UTC Spring.jpa.properties.hibernate.jdbc.time_zone=UTC Spring.jpa.properties.hibernate.timezone.default_storage=NORMALIZE_UTC То же самое происходит и с datetime2:
Проверка схемы: обнаружен неправильный тип столбца в столбце [метка времени] в таблице [action_log]; найдено [datetime2 (Types#TIMESTAMP)], но ожидается [datetimeoffset(6) (Types#TIMESTAMP_UTC)].
Вопрос: Как мы можем настроить Hibernate так, чтобы он принимал столбец типа timestamp для SQL Server и удалял всю информацию о часовом поясе, поскольку мы все равно храним время в формате UTC?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Сборка Visual Studio завершается неудачно, но сборка dotnet с помощью CLI завершается успешно.
Anonymous » » в форуме C# - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Сборка Visual Studio завершается неудачно, но сборка dotnet с помощью CLI завершается успешно.
Anonymous » » в форуме C# - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-