2012-07-20 49 views
0

我有兩個獨立的數據庫模式(或2用戶的Oracle的行話表) - schemaA和schemaB。休眠:2點的數據源以初始化單個對象

schemaA,其它表中,具有表:

domain(id NUMBER PK, description(VARCHAR2(10))

schemaB具有表:

q_user(id NUMBER PK, username VARCHAR2(8) NOT NULL, domain_id NUMBER, CONSTRAINT foreign key references schemaA.domain(id))

Java類QUSER具有以下屬性: Long id, String username, Domain domain

的問題:是否可以配置? Hibernate使用兩個不同的數據源(schemaA和schemaB)初始化QUser對象?如果是這樣,我該怎麼做?

當然我也會使用Spring 3,休眠3.6和Oracle 10g。

我在Spring技術來定義多個數據源和動態交換他們,但我不知道這可以用來初始化一個對象。

任何幫助表示讚賞。 感謝

回答

1

在您的域名映射,還可以輸入模式名稱。

隨着XML:

<class name="Domain" table="domain" catalog="schemaA"> 

使用註釋:

@Table(name = "domain", schema = "schemaA") 

然後,你並不需要多個數據源。你建立連接使用schemaB用戶數據源(因爲你有權限訪問schemaAschemaB表 - 因此外鍵)。

+0

謝謝!這看起來不錯,但爲了保持問題的清潔,我將Domain to User的關係保持爲1:1,但在現實生活中,我擁有多對多的關係。所以,我在中間的user_domain(user_id NUMBER,domain_id NUMBER)中有這個交集表。當我嘗試添加模式(或目錄)到域模型類時,我得到了 - 沒有這樣的表或視圖錯誤。當我查看生成的sql時,它不會將架構應用於「... from ...域中的域」(應該是schemaA.Domain)。我想這種多對多的關係是一個不同的情況 - 你能指出我在正確的方向嗎?很多謝謝 – 2012-07-20 09:54:56

+0

@damo_inc您是使用XML還是註釋?我重新檢查並且在XML中也有一個模式屬性。 – 2012-07-20 10:46:23

+0

我正在使用註釋。我設法通過在其他模式的表上創建同義詞來解決它。幸運的是,我有完整的系統訪問兩個模式:)。非常感謝您的幫助。 – 2012-07-20 12:57:09