Проверка схемы завершается неудачно с Hibernate 6 и ZonedDateTime, а также с меткой времени типа столбца с SQL Server и JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проверка схемы завершается неудачно с Hibernate 6 и ZonedDateTime, а также с меткой времени типа столбца с SQL Server и

Сообщение Anonymous »


Мы перенесли существующее приложение весенней загрузки на 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?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»