为什么Hibernate切换到使用LONG over CLOB?
看起来Hibernate开始在版本3.5.5(我们从3.2.7升级)中使用数据类型,而不是用于.LONG
CLOB
type="text"
这会导致问题,因为 Oracle 中的数据类型是一种旧的过时数据类型(请参阅 http://www.orafaq.com/wiki/LONG),不应使用,并且表不能具有多个列作为数据类型。LONG
LONG
有谁知道为什么会改变这一点?
我试图将Oracle属性设置为true(如Hibernate > CLOB>Oracle :(中建议的那样),但这不会影响数据类型映射,而只影响与我的情况无关的数据传输内部。SetBigStringTryClob
一个可能的解决方法是覆盖 :org.hibernate.dialect.Oracle9iDialect
public class Oracle9iDialectFix extends Oracle9iDialect {
public Oracle9iDialectFix() {
super();
registerColumnType(Types.LONGVARCHAR, "clob");
registerColumnType(Types.LONGNVARCHAR, "clob");
}
}
然而,这是最后的手段 - 覆盖这个类更接近分叉Hibernate,我宁愿避免这样做。
谁能解释一下为什么这样做?这应该作为一个错误提出吗?
[更新]:我已经创建了 https://hibernate.atlassian.net/browse/HHH-5569,让我们看看会发生什么。