【问题标题】:using dbunit with oracle. Schema problems将 dbunit 与 oracle 一起使用。架构问题
【发布时间】:2011-02-15 13:56:14
【问题描述】:

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

问候

【问题讨论】:

    标签: oracle dbunit


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      当未指定架构并且 DbUnit 检测到 它正在从具有 同名并位于不同的架构中。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-29
        相关资源
        最近更新 更多