簡體   English   中英

使用多個數據庫目錄對 Hibernate 進行單元測試

[英]Unit testing Hibernate with multiple database catalogs

我在測試查詢多個目錄/模式的 Hibernate 應用程序時遇到問題。

生產數據庫是 Sybase,除了映射到默認目錄/模式的實體之外,還有兩個實體映射如下。 因此總共有三個目錄。

@Table(catalog = "corp_ref_db", schema = "dbo", name = "WORKFORCE_V2")
public class EmployeeRecord implements Serializable {
}

@Table(catalog = "reference", schema = "dbo", name="cntry")
public class Country implements Serializable {
}

這一切都適用於應用程序,沒有任何問題。 然而,當單元測試時,我通常的策略是使用 HSQL 並將 hibernate 的 ddl 標志設置為 auto 並讓 dbunit 填充表。

當表都在同一個架構中時,這一切都很好。

但是,由於添加了這些額外的表,由於 HSQL 僅支持一個目錄,因此 DDL 將無法運行,因此測試會中斷。

create table corp_ref_db.dbo.WORKFORCE_V2
user lacks privilege or object not found: CORP_REF_DB

如果只有兩個目錄,那么我認為可以通過將 HSQL 數據庫中的默認目錄和模式更改為明確定義的目錄和模式來解決這個問題:

是否有任何其他內存數據庫可能適用,或者是否有任何策略可以讓測試在 HSQL 中運行。

我曾想過提供一個指定默認目錄和模式的 orm.xml 文件(覆蓋任何注釋並在默認目錄/模式中創建所有定義的表)但是當執行 DDL 時似乎沒有觀察到這些覆蓋,即我得到與上面相同的錯誤。

本質上,然后我想運行我現有的測試,或者以某種方式創建在映射中定義的表,或者以某種方式覆蓋實體級別的目錄/模式定義。

我想不出任何方法來實現這兩種結果。 有任何想法嗎?

我相信H2支持目錄。 我自己沒有使用它們,但是信息模式中有一個CATALOGS表。

我設法通過IGNORE_CATALOGS屬性和版本 1.4.200 在 H2 中實現了類似的功能

但是,他們文檔中的 url 示例似乎對我不起作用,所以我在我的 schema.xml 中添加了一條語句: SET IGNORE_CATALOGS = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM