アッカ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
どのように私は受け入れるために休止を強制することができnvarchar2
てvarchar
?
私が使用することができます知っている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());
}
}