Миграция пролета на существующей базе данных приводит к «неправильному типу столбца в столбце» - PullRequest
0 голосов
/ 07 января 2019

У меня есть приложение весенней загрузки, которое использует мою схему базы данных. Допустим, у меня есть непустая схема с таблицей APPLICATION_USERS, определенной следующим образом:

create table AREA
(
  name NVARCHAR2(36) not null,
  id   NUMBER not null
)

Теперь я хотел добавить FlyWay в свое приложение. В свойствах моего приложения я определил flyway.baselineOnMigrate=true, чтобы начать первоначальное развертывание Flyway, и spring.jpa.hibernate.ddl-auto=validate, чтобы проверить схему против Enities, однако при запуске приложения я получаю следующую ошибку:

 wrong column type encountered in column [name] in table [APPLICATION_USERS]; found [nvarchar2 (Types#OTHER)], but expecting [varchar2(255 char) (Types#VARCHAR)]

насколько я понимаю, он жалуется на NVARCHAR2, как и ожидалось varchar как я могу заставить hibernate принять nvarchar2 как varchar?

я знаю, что могу использовать columnDefinition в атрибутах своей сущности, однако это не решение моей мечты, есть ли другой способ?

1 Ответ

0 голосов
/ 07 января 2019

Я предполагаю, что вы используете базу данных Oracle.

Вы должны аннотировать имя атрибута в вашей организации с помощью Национализированной

@Nationalized
private String name;

Вы также можете зарегистрировать свой собственный диалект:

public class CustomOracleDialect extends Oracle10gDialect {

    public CustomOracleDialect() {
        super();
        registerColumnType(Types.NVARCHAR, "nvarchar2($l)");
        registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());
    }
}
...