Java DbUnit看不到Oracle列NoSuchColumnException
数据库单元设置:Java DbUnit看不到Oracle列NoSuchColumnException,java,oracle,dbunit,Java,Oracle,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());
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());
代码:
数据集:
<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"/>
例外情况:
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等其他列可以导入。我使用的是Oracle11g,DBUnit2.4.8
为什么无法导入上次更新的PSR\u?
谢谢 我相信你的特例告诉你出了什么问题: 非大写输入列:PSR\u LAST\u由中更新 ColumnNameToIndexes缓存映射。请注意,映射的列名是 不区分大小写 在我看来,您的列是用混合大小写创建的,在这种情况下,它需要用双引号引用,这正是字典中的大小写。不知道如何在DBUnit中实现这一点。显然,在某个地方有一个映射定义了表的列,并采用大写的列名。最好将该列重命名为全大写
说明了我认为这里正在发生的事情。我认为您的异常情况告诉您出了什么问题: 非大写输入列:PSR\u LAST\u由中更新 ColumnNameToIndexes缓存映射。请注意,映射的列名是 不区分大小写 在我看来,您的列是用混合大小写创建的,在这种情况下,它需要用双引号引用,这正是字典中的大小写。不知道如何在DBUnit中实现这一点。显然,在某个地方有一个映射定义了表的列,并采用大写的列名。最好将该列重命名为全大写
说明了我认为这里正在发生的事情。您是否找到了解决问题的方法?我现在也有同样的问题……你找到解决问题的办法了吗?我现在也有同样的。。。
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.