2

如何将 DBunit 限制为特定模式。在做 DatabaseOperation.CLEAN_INSERT 时,dbunit 这个异常

org.dbunit.database.AmbiguousTableNameException:SCHEMA_UPDATE_TBL

但是这个表不在我使用的模式中。我认为它来自同一个 Oracle 数据库中的另一个表。如何限制 dbunit 查看我的架构。

我正在使用jpa。

例如,在我的 persistence.xml 中使用的连接是这样的

            <property name="hibernate.connection.username" value="mikea"/>
        <property name="hibernate.connection.password" value="mikea"/>
        <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:MOT4"/>

问候

4

2 回答 2

3

行。我想到了。DatabaseConnection() 构造函数接受默认模式参数。例如,“mikea”是我要使用的模式:

connection = new DatabaseConnection(
        ( ( HibernateEntityManager ) em ).getSession().connection(),"mikea" );
DatabaseConfig config = connection.getConfig();
Class factory_class = Class.forName( "org.dbunit.ext.oracle.Oracle10DataTypeFactory" );
config.setProperty( DatabaseConfig.PROPERTY_DATATYPE_FACTORY, factory_class.
                newInstance() );
于 2011-02-15T15:02:59.540 回答
1

这也是 DBUnit 常见问题解答的回答者: http ://dbunit.sourceforge.net/faq.html#AmbiguousTableNameException

当未指定架构并且 DbUnit 检测到它正在从具有相同名称且位于不同架构中的多个表中获取列信息时,会发生此错误。

您可以通过三种不同的方式解决此问题:

于 2017-01-13T08:14:55.100 回答