【发布时间】:2011-10-09 07:13:55
【问题描述】:
我最近将 Hibernate 从 3.3.x 版本升级到 3.6.4。在 3.3.x 版本中,validateSchema (hibernate.hbm2ddl.auto=validate) 可以正常工作。
在 3.6.x 版本中,验证被破坏(也针对 3.6.4 和 3.6.7 进行了测试)。 该问题仅与字段类型文本有关。
我在方言中重新定义了 SQL 类型,例如
public class SQLServer2000UnicodeDialect extends SQLServerDialect {
public SQLServer2000UnicodeDialect(){
super();
// Use Unicode Characters
...
registerColumnType( Types.CLOB, "ntext" );
...
}
}
但是在验证过程中,hibernate使用原始的SQL类型而不是自定义的!
db.dbo.table_name 中列 a_column 的列类型错误。成立: ntext,预期:文本
它看起来像一个错误,但不确定是不是。也许我在配置中遗漏了什么?
附: hibernate.hbm2ddl.auto=create/update 也不能正常工作!
附言我的 XML 映射配置:
<property name="propName" type="text" column="a_column"/>
【问题讨论】:
-
在验证什么时,“hibernate 使用原始 SQL 类型而不是自定义”?
-
Configuration.validateSchema() 或 hibernate.hbm2ddl.auto=create/update/validate
标签: java hibernate orm hibernate-mapping