2012-08-08 43 views
3

我們正在設置一個新項目並決定使用eclipselink作爲JPA。當創建我們的領域模型時,我們遇到了一個問題。JPA多重鑑別碼值

我們有一個名爲organization的基類。我們也有供應商和客戶,這兩者都擴大了組織。當JPA創建表時,我發現它使用鑑別器,問題在於供應商也可能是一個組織。

所以我基本上要爲(這些是數據庫表的想法):

ERD showing subtyping with

一個小例子,以幫助澄清這一點:

我們有一個叫做SparklingGlass客戶。 SparklingGlass從我們那裏購買電腦,所以SparklingGlass被保存爲我們的客戶。我們反過來從SparklingGlass購買我們的窗戶,所以SparklingGlass也是我們的供應商。這是我們想要在我們的系統中實現的。

這是以任何方式可能在JPA和ifnot,這些情況下的最佳做法是什麼?

順便說一句,我們使用JOINED繼承類型

回答

0

你的數據模型有誤。供應商不是組織的一個子類型,而是組織發揮的作用。

組織可以扮演很多角色,例如客戶,供應商,供應商,僱主。

0

不知道我明白。在Java繼承中,一個實例只能是一個類。由於供應商和客戶繼承組織,「所有」供應商和「所有」客戶都是組織。

供應商查詢將加入組織和供應商表以構建供應商實例。

+0

對不起,我看你是如何感到困惑。我的意思是,我創建了一個ID爲1的實例組織,現在我想擁有該組織的兩個子類型(供應商和客戶),並且我希望兩者都擁有ID 1。 – Rob 2012-08-08 12:35:44