看起来 Hibernate 开始使用LONG
版本 3.5.5(我们从 3.2.7 升级)中的数据类型而不是CLOB
为 的财产type="text"
.
这导致了以下问题LONG
Oracle 中的数据类型是一种过时的数据类型(请参阅http://www.orafaq.com/wiki/LONG http://www.orafaq.com/wiki/LONG)不应该使用,并且表格不能有超过一列LONG
作为数据类型。
有谁知道为什么会这样改变?
我尝试过设置OracleSetBigStringTryClob
属性为 true (如建议的休眠 > CLOB > Oracle :( https://stackoverflow.com/questions/1843484/hibernate-clob-oracle),但这不会影响数据类型映射,而只会影响与我的情况无关的数据传输内部结构。
对此的一种可能的解决方法是覆盖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 https://hibernate.atlassian.net/browse/HHH-5569, 让我们看看发生了什么。
看起来这个问题的解决方案是使用materialized_clob
,至少盖尔·巴德纳 (Gail Badner) 是这么说的HHH-5569 https://hibernate.atlassian.net/browse/HHH-5569.
这对我根本没有帮助(我对此留下了相关评论),但可能对这里的其他人有帮助。不管怎样,这个错误被拒绝了,我对此无能为力,只能使用覆盖方言:(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)