【问题标题】:DbUnit doesnt see Oracle column NoSuchColumnExceptionDbUnit 没有看到 Oracle 列 NoSuchColumnException
【发布时间】:2011-07-14 11:25:58
【问题描述】:

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

【问题讨论】:

  • 您找到解决问题的方法了吗?我现在也有同样的情况......

标签: java oracle dbunit


【解决方案1】:

我相信你的异常告诉你出了什么问题:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2012-04-23
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多