gpt4 book ai didi

java - DBUnit:具有 MySQL YEAR 类型列的数据集

转载 作者:行者123 更新时间:2023-11-29 20:53:15 35 4
gpt4 key购买 nike

各位!

我在使用 DBUnit 时遇到问题:

在我的测试类中,当我调用DatabaseOperation.INSERT.execute(connection, dataSet)时,使用引用包含 YEAR(4) 类型列的表的 FlatXmlDataSet - 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 格式的信息。

有人可以帮助我吗?

谢谢

杰夫

最佳答案

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

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

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

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

关于java - DBUnit:具有 MySQL YEAR 类型列的数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37845717/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com