2011-02-15 32 views
2

如何將DBunit限制到特定架構。在做DatabaseOperation.CLEAN_INSERT, DbUnit的這個例外使用dbunit和oracle。架構問題

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

問候

回答

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()); 
1

這也是回答者通過DBUnit的常見問題解答:http://dbunit.sourceforge.net/faq.html#AmbiguousTableNameException

時沒有指定模式出現此錯誤和DbUnit的檢測 那它從具有相同名稱且位於不同架構中的多個表中獲取列信息。

您可以通過三種不同的方式解決這個問題: