DbUnit设置:
DatabaseConfig config = connection.getConfig();
config.setProperty(DatabaseConfig.FEATURE_SKIP_ORACLE_RECYCLEBIN_TABLES, true);
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new org.dbunit.ext.oracle.OracleDataTypeFactory());
代码:
@Test
@DataSet(value="ReportTest.testPropagationToChild.xml", loadStrategy=RefreshLoadStrategy.class)
public void testPropagationToChild() {
数据集:
<dataset>
<REPORT ID="-1" NODE_NAME="TG1" NODE_LEVEL="2" PARENT_ID="0" RENA_STATUS="1" PSR_STATUS="1" PSR_AMOUNT="200" RENA_AMOUNT="1000" PSR_LAST_UPDATED_BY="u11" RENA_LAST_UPDATED_BY="u2"/>
表:
ID PARENT_ID NODE_NAME NODE_LEVEL RENA_STATUS RENA_LAST_UPDATED RENA_LAST_UPDATED_BY RENA_AMOUNT PSR_STATUS PSR_LAST_UPDATED PSR_LAST_UPDATED_BY PSR_AMOUNT RENA_COMMENT ADDITIONAL_COMMENT
例外:
Caused by: org.dbunit.dataset.NoSuchColumnException: REPORT.PSR_LAST_UPDATED_BY - (Non-uppercase input column: PSR_LAST_UPDATED_BY) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
其他列(如ID等)可以导入。我正在使用Oracle 11g,dbunit 2.4.8
为什么导入PSR_LAST_UPDATED_BY失败? 谢谢!
答案 0 :(得分:0)
我相信你的异常告诉你错误:
(非大写输入栏:PSR_LAST_UPDATED_BY)in ColumnNameToIndexes缓存映射。请注意,地图的列名称是 不区分大小写。
在我看来,您的列是使用混合大小写创建的,在这种情况下,需要在双引号中引用它,完全是字典中的情况。不确定你是如何在DBUnit中那样做的。显然,某个地方有一个“map”来定义表的列,并假定大写的列名。最好将列重命名为全部大写。
This SO question/answer说明了我认为在这里发生的事情。