Подтвердить что ты не робот

Тип 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) в сущности?

Спасибо.

4b9b3361

Ответ 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)