Hibernateは、のプロパティではLONG
なく、バージョン3.5.5(3.2.7からアップグレード)でデータ型の使用を開始したようです。CLOB
type="text"
LONG
Oracleのデータ型は使用すべきではない古い古いデータ型(http://www.orafaq.com/wiki/LONGを参照)であり、テーブルに複数の列を含めることはできないため、LONG
これが問題を引き起こしています。データ型。
なぜこれが変更されたのか誰かが知っていますか?
SetBigStringTryClob
Oracleプロパティをtrueに設定しようとしました( Hibernate> CLOB> Oracle :(で提案されているように)が、データ型マッピングには影響せず、私の場合とは関係のないデータ転送内部のみに影響します。
org.hibernate.dialect.Oracle9iDialect
これに対する1つの可能な修正は、 :をオーバーライドすることです。
public class Oracle9iDialectFix extends Oracle9iDialect {
public Oracle9iDialectFix() {
super();
registerColumnType(Types.LONGVARCHAR, "clob");
registerColumnType(Types.LONGNVARCHAR, "clob");
}
}
ただし、これが最後の手段です。このクラスをオーバーライドすることは、Hibernateをフォークすることに一歩近づきます。
なぜこれが行われたのか誰かが説明できますか?これはバグとして提起されるべきですか?
[更新]:https ://hibernate.atlassian.net/browse/HHH-5569を作成しました。どうなるか見てみましょう。