Тип Oracle Char и спящий режим
У меня есть таблица оракула, которая содержит char (n) тип для нескольких столбцов. Я использую hibernate-инструменты для создания объектов objets и этой карты инструментов char типа в String.
Но когда я развертываю свое приложение, я получаю сообщение об ошибке, потому что Hibernate ожидает тип varchar2, а не тип char:
Wrong column type in ARBOR.CMF for column CHG_WHO. Found: char, expected: varchar2(30 char)
Какой тип java я должен использовать для сопоставления типа char (n) в сущности?
Спасибо.
Ответы
Ответ 1
Здесь есть полезная информация в этой записи в блоге.
По существу вам нужно сделать более точную конфигурацию вашей гибернации, поскольку она предполагает сопоставление строк по умолчанию в varchar2 (30).
Вы можете попробовать использовать аннотацию базы данных @Column (length = N) (где N - фактическая длина столбца в базе данных). Если это не сработает, попробуйте использовать подход @Column (columnDefinition = "char" ).
Ответ 2
Не работает - сбой Проверка схемы спящего режима:
@Column(name="ENABLED_FLAG", length=1)
private String enabledFlag;
Работает, так как атрибут columnDefinition
указывает Hibernate не по умолчанию на VARCHAR2
как тип столбца, а вместо этого использовать CHAR
:
@Column(name="ENABLED_FLAG", length=1, columnDefinition="CHAR")
private String enabledFlag;
Столбец в базе данных определяется как:
ENABLED_FLAG CHAR(1 BYTE)