【问题标题】:DBUnit: dataset with MySQL YEAR type columnDBUnit:具有 MySQL YEAR 类型列的数据集
【发布时间】:2016-06-15 21:02:24
【问题描述】:

伙计们!

我在使用 DBUnit 时遇到问题:

在我的测试类中,当我调用 DatabaseOperation.INSERT.execute(connection, dataSet) 时,使用 FlatXmlDataSet 引用包含 YEAR(4) 类型列的表 - MySQL - 我得到以下:

(...)
Caused by: org.dbunit.dataset.datatype.TypeCastException: Error casting value for table 'Vehicle' and column 'LaunchYear'
    at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:210)
    at net.carroramafleet.ws.utils.DbUnitHelper.execute(DbUnitHelper.java:57)
    ... 33 more
Caused by: org.dbunit.dataset.datatype.TypeCastException: Unable to typecast value <2010> of type <java.lang.String> to DATE
    at org.dbunit.dataset.datatype.DateDataType.typeCast(DateDataType.java:110)
    at org.dbunit.dataset.datatype.DateDataType.setSqlValue(DateDataType.java:141)
    at org.dbunit.database.statement.SimplePreparedStatement.addValue(SimplePreparedStatement.java:73)
    at org.dbunit.database.statement.AutomaticPreparedBatchStatement.addValue(AutomaticPreparedBatchStatement.java:63)
    at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:200)
    ... 34 more

这是我的数据集:

<dataset>
    <Vehicle 
            ID="999" 
            LaunchYear="2010" />
</dataset>

如上所述,我在 Vehicle 表中有一个 YEAR(4) 类型的列 LaunchYear。并且DBUnit不能插入这一行,因为这个信息不能正确转换。

我已经尝试过replace this information using DBUnit's ReplacementDataSet,但我仍然遇到 TypeCastException 的问题。我真的无法设置有效的 YEAR 格式信息。

有人可以帮我吗?

谢谢,

杰夫

【问题讨论】:

    标签: java mysql dbunit


    【解决方案1】:

    这个问题有点老了,但我想我会回答,因为我今天遇到了同样的问题。

    我相信这是 DbUnit 中的一个错误。顺便说一句,我使用的是 2.4.9,但确实检查了以后版本的发行说明,看看这是否被称为错误修复。

    YEAR 列正在转换为 java.sql.Date 对象。最初的错误是没有从简单字符串“2016”到 java.sql.Date 的转换。这会导致 TypeCastException。将此字段更改为“2016-08-10”之类的内容可以让您克服此初始错误,但当 MySql 尝试将日期截断为整数或短整数时会导致 SQLException。

    我能够解决此问题的唯一方法是在 @SetUp 或 @Before 方法中添加特定代码,以使用初始数据填充表。

    【讨论】:

      猜你喜欢
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多