dbunit 中的休眠 hbm2ddl 布尔列 typeCastException

Posted

技术标签:

【中文标题】dbunit 中的休眠 hbm2ddl 布尔列 typeCastException【英文标题】:hibernate hbm2ddl boolean column typeCastException in dbunit 【发布时间】:2010-12-06 15:00:44 【问题描述】:

我使用带有 Hibernate 的内存 Derby 数据库来创建表。我的测试使用 dbunit 来准备带有测试数据的数据库。

db.driverClass=org.apache.derby.jdbc.EmbeddedDriver
db.url=jdbc:derby:memory:myDb;create=true
hibernate.dialect=org.hibernate.dialect.DerbyDialect
hibernate.hbm2ddl.auto=create-drop

Hibernate 似乎创建了一个 smallint 列类型来存储布尔值。但 dbunit 无法转换此值。

Caused by: org.dbunit.dataset.datatype.TypeCastException: Unable to typecast value <true> of type <java.lang.String> to SMALLINT

任何想法让 Hibernate 创建一个布尔列(如果在 derby 中可用)或让 dbunit 将 java 布尔值写入 smallint 列?

这解释了同样的问题,但似乎没有 Derby 的 DataTypeFactory 实现。 http://old.nabble.com/Data-type-factory-for-Derby-database.-td25996976.html

【问题讨论】:

我在 oracle 上也遇到了同样的问题,你有没有找到让 dbunit 根据底层 db 实现来解释布尔值的解决方案? 【参考方案1】:

我不相信 Derby 目前提供真正的布尔数据类型,尽管正在努力提供一个,请参阅:https://issues.apache.org/jira/browse/DERBY-4716。支持这项工作的 Derby 版本预计“很快”会发布。

【讨论】:

以上是关于dbunit 中的休眠 hbm2ddl 布尔列 typeCastException的主要内容,如果未能解决你的问题,请参考以下文章

休眠:hbm2ddl 反转列顺序 [重复]

使用休眠映射布尔值

DBUnit 布尔值

休眠:hbm2ddl.auto=生产中的更新?

休眠 - hibernate.hbm2ddl.auto = 验证

休眠:hbm2ddl.auto=update 和 autoincrement