2017-10-11 58 views
-1

我是新的Hibernate和有關於設置我的數據庫的問題。設置與休眠和3個實體表

我有3個實體:Project,R1和R2。 一個項目可以有一對多的R1和R1可以屬於多個項目。 R2屬於一對Project-R1。 R2可以屬於Project-R1的多對。

例子:

我的想法是第一對夫婦的項目,以R1,讓項目記得R1的有哪些。因此,第三個表與Project和R1的主鍵連接。

當我必須將R2耦合到Project-R1情侶時,我想使用Project-R1和R2的主鍵使用另一個連接表。但是我怎樣才能使用Hibernate進行最後一次連接,而無需在Project-R1-R2旁邊創建一個自己的主鍵的連接表。

它甚至有可能嗎?

回答

1

Hibernate docs舉這個例子三元協會:

@Entity 
public class Company { 
@Id 
int id; 
... 
@OneToMany // unidirectional 
@MapKeyJoinColumn(name="employee_id") 
Map<Employee, Contract> contracts; 
} 

// or 

<map name="contracts"> 
<key column="employer_id" not-null="true"/> 
<map-key-many-to-many column="employee_id" class="Employee"/> 
<one-to-many class="Contract"/> 
</map> 

該文檔還注意到,R 2 - (P + R1)類型的關聯將典型地被代替建模爲一個單獨的實體類。這也是我的做法。

+0

感謝您的回答。如果我正確地理解了,是不是更好地製作一個包含P,R1和R2的id作爲外鍵的獨立表?我的問題是,P和R1必須立即耦合,但R2可能會在稍後時間。將P和R1保存在連接表中並在我們想將R2添加到P + R1時創建另一個表是否是一個好主意?有一個額外的表 – Urban

+0

我不認爲以後添加的R2是(關聯或實體類)方法的問題。您應該考慮只有在您的應用程序邏輯中創建鏈接時才創建實體 - >當您實際添加R2信息時,只應將行插入到連接表中。 – jaacco