使用dbunit和oracle。架构问题

时间:2011-02-15 13:56:14

标签: oracle dbunit

如何将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"/>

此致

2 个答案:

答案 0 :(得分:2)

确定。我想到了。 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() );

答案 1 :(得分:1)

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

  

如果未指定架构且DbUnit检测到此错误,则会发生此错误   它从多个表中获取列信息   同名,位于不同的模式中。

     

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