Я обновляю Hibernate с 6.1.7
до 6.5.2
, в моих объектах много столбцов перечислений, отмеченных значком
@Enumerated(EnumType.ORDINAL)
. Моя кодовая база должна работать как с Oracle, так и с SQL Server.
Проблема заключается в изменении в Hibernate отображения перечислений с SMALLINT
на TINYINT
(если перечисления имеют всего несколько значений).
У меня уже есть фиксированная схема БД для Oracle как NUMBER(10, 0)
и для SQL Server как INT
для порядковых перечислений.
Кажется, я не могу найти решение для сопоставления перечислений с аннотациями, которые бы работали для обеих БД одновременно. В настоящее время это работает для Oracle, но проверка схемы для SQL Server выдает:
Проверка схемы: в столбце [XXXX] в таблице [XXX] обнаружен неверный тип столбца; найдено [int (Types#INTEGER)], но ожидается [smallint (Types#SMALLINT)]
Есть идеи, как это исправить?
Я попробовал добавить @JdbcTypeCode(Types.SMALLINT)
, те же ошибки.
Также @Column(columnDefinition = "int")
, который исправляет SQL Server, но Oracle начинает сбоить при проверке схемы:
Проверка схемы: обнаружен неправильный тип столбца в столбце [definitionRef_targetType] в таблице [m_acc_cert_campaign]; найдено [число (Types#NUMERIC)], но ожидается [int (Types#TINYINT)]
🤔 А знаете ли вы, что...
Java поддерживает многопоточность, что позволяет создавать многозадачные приложения.