将 dbunit 与 Oracle 一起使用。架构问题

发布于 2024-10-17 09:08:51 字数 603 浏览 2 评论 0原文

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

org.dbunit.database.AmbigouslyTableNameException: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"/>

问候

How do you restrict DBunit to a specific schema. When doing DatabaseOperation.CLEAN_INSERT,
dbunit this exception

org.dbunit.database.AmbiguousTableNameException: SCHEMA_UPDATE_TBL

But this table is not in the schema I am using. I think it is coming from another table in the same Oracle database. How do I limit dbunit to look at my schema.

I'm using jpa.

eg connection am using in my persistence.xml is like this

            <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"/>

Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

剑心龙吟 2024-10-24 09:08:51

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

Ok. I figured it out. The DatabaseConnection() constructor accepts a default schema parameter. For example, "mikea" is the schema I want to use:

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() );
阳光下的泡沫是彩色的 2024-10-24 09:08:51

这也是 DBUnit 常见问题解答的回答者: http://dbunit.sourceforge.net/faq.html#模糊表名称异常

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

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

This is also answerer by DBUnit FAQ's: http://dbunit.sourceforge.net/faq.html#AmbiguousTableNameException

This error occurs when no schema is specified and that DbUnit detect
that it is getting columns information from multiple tables having the
same name and located in different schemas.

You can solve this problem in three different ways:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文