2010-08-05 111 views
3

我有2個現有的表在我的數據庫。 讓我們打電話給他們主席現在。 這兩個表都映射爲休眠中的實體休眠與現有表的繼承

這兩個表在我的數據庫中已經存在一段時間了,並且它們有自己的自動生成的ID作爲主鍵。

但是現在,我想組我的Java代碼非常合乎邏輯的傢俱接口下的實體,所以我可以有一個列表,我衆議院類。

我研究過Hibernate的繼承,但似乎沒有弄明白。 我該如何讓我的衆議院類獲得它擁有的所有傢俱的清單?我應該使用哪種繼承映射策略?

感謝, 巴特

回答

1

你是在正確的軌道上。如果您創建Furniture界面或基類,並讓Table和Chair實現/擴展該類型,則應該很好。你可以有一個

List<Furniture> 

你的房子。

唯一需要修改映射的情況是,如果要實現hibernate文檔中概述的任何多態映射策略。有些選項

  1. 創建一個傢俱表,在該表的所有座椅/桌子代替(每個類層次結構一個表)。你不必這樣做。在這種情況下,你的表將擁有這兩個類的所有屬性,所以並不是所有的列都將被使用,這取決於持久化的類型。會有'鑑別器'列,所以hibernate可以告訴一行的類型。

  2. 您想創建一個傢俱表,並重構/標準化您的表/椅子表,以便將所有常用字段拉入傢俱表中。您保留桌子和椅子表。這是另一種類型的多態映射(檢查文檔)

  3. hibernate文檔中的其他選項。

選擇1是hibernate文檔中的首選策略,我相信。

但是要做到這一點,你不必做任何這些 - 如果你願意在表中有重複的列,你的實體可以擴展/從其他類型的繼承而沒有任何特殊的映射考慮因素。

我會寫一些簡單的JUnit或任何測試並試用它。