2

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

4

1 回答 1

0

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

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

在我看来,您的专栏是用混合大小写创建的,在这种情况下,它需要用双引号引用,这与字典中的情况完全相同。不知道你是如何在 DBUnit 中做到这一点的。显然,某处有一个“地图”,它定义了表的列,并假定大写的列名。最好将该列重命名为全部大写。

这个 SO question/answer说明了我认为这里发生的事情。

于 2011-07-14T14:40:11.837 回答