「列に遭遇した間違った列タイプ」で、既存のデータベース結果に移行をフライウェイ

アッカJaworek:

私は私のデータベーススキーマを使用して春のブートアプリケーションを持っています。私は、テーブルと非空のスキーマ考えてみましょうAPPLICATION_USERS次のように定義されました:

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

今、私は自分のアプリケーションにフライウェイを追加したいです。私は自分のアプリケーションのプロパティで定義されているflyway.baselineOnMigrate=true最初のフライウェイの展開を開始し、spring.jpa.hibernate.ddl-auto=validateしかし、私はエラーを次取得アプリケーションの起動時に、私のEnities againsスキーマを検証します:

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

限り、私はそれを理解し、それは文句を言うNVARCHAR2ことは期待どおり、varcharどのように私は受け入れるために休止を強制することができnvarchar2varchar

私が使用することができます知っているcolumnDefinition他の方法があるが、これは私の夢のソリューションではありません、私のエンティティの属性に?

サイモン・マルティネリ:

私は、Oracleデータベースを使用していることを前提としています。

あなたは国有であなたのエンティティであなたの属性名に注釈を付ける必要があり

@Nationalized
private String name;

また、独自の方言を登録できます。

public class CustomOracleDialect extends Oracle10gDialect {

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=239367&siteId=1