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?
谢谢!

最佳答案

我相信您的例外告诉您出了什么问题:


  (非大写输入列:PSR_LAST_UPDATED_BY)在
  ColumnNameToIndexes缓存映射。请注意,地图的列名是
  不区分大小写。


在我看来,您的列是使用大小写混合的形式创建的,在这种情况下,需要在双引号中引用它,而在字典中正是这样。不确定如何在DBUnit中执行此操作。显然在某处有一个“映射”定义了表的列,并采用了大写的列名。最好将列重命名为全部大写。

This SO question/answer说明了我相信这里正在发生的事情。

关于java - DbUnit没有看到Oracle列NoSuchColumnException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6692426/

10-13 05:26