2013-10-04 237 views
0

我是新手進入休眠狀態。我有兩個表如下兩個表主鍵作爲第三個表的主鍵

Table1{id1 primary key;} 

Table2{id2 primary key;} 

table1到table2之間有一對多的關係。實現了這種關係,沒有問題。我們還有第三張表格如下

Table3{(id1 & id2) primary key, col3 ,col4} 

從google搜索中得到了一個解決方案,在第三張表格映射中使用如下。

<composite-id> 
    <key-property name="id1" column="id1" /> 
    <key-property name="id2" column="id2"/> 
</composite-id> 

如果有更好的/高級的方法在hibernate中實現它,請提供/指導我。也建議更好的方式來保存和檢索對象。

在此先感謝。

回答

0

我建議不要這樣設計;主鍵應始終是單列,技術關鍵(即沒有任何類型的業務關係)。

在我的模式,我對此建模像這樣:

Table3(id primary key, table1fk foreign key, table2fk foreign key, col1, col2, ...) 

優點:

  • 所有表
  • 使用外鍵相同的設計可以使您不小心刪除了項目在Table1Table2
  • 明確分離關注點:PK用於定位和標識一行。外鍵意味着:我指的是另一張桌子。您的設計混合了兩個
+0

嗨亞倫,這裏的一個挑戰是我們要確保在第三個表格中隨時只有一行存在id1和id2組合。如果我們採用你的設計......是否有可能實現這種複雜性? – Venkat

+0

在這兩列上創建一個唯一索引。 –

相關問題