2009-10-06 118 views
2

幫助這些是我想要使用Hibernate映射表:需要一些休眠關係映射

user (PK UserId) 
article (PK ArticleId, FK CreatorUserId) 
category (PK CategoryId, FK ParentCategoryId) 

我一直在尋找的documentation爲休眠模式,但我真的不能選擇什麼類型的映射是最適合我的桌子。

任何幫助將不勝感激! :)

回答

1

對於用戶與物品的關係,您可以使用集或列表映射爲包;清單往往是更方便的處理在java端,特別是如果文章有一個屬性,你可能想要排序集合(例如創建日期)。樣本映射爲:

<!-- within User mapping --> 
<set name="articles" table="article" inverse="true"> 
    <key column="CreatorUserId"/> 
    <one-to-many class="Article"/> 
</set> 

<!-- within Article mapping --> 
<many-to-one name="creatorUser" class="User" column="CreatorUserId" not-null="true"/> 

上述地圖關聯與製品是負責維護的關係(這避免了在集合變化的不必要的更新)雙向的。詳情是here。如果您寧願使用List來代替Set,請將<set>替換爲<bag>;你可以添加「order-by」屬性來讓你的列表在數據庫中排序。

對於您可能在理論上類別相同,但是如果您的類別層次結構很深並且您需要經常檢索特定的級別/子樹,請考慮使用nested set model來代替。

1
  • 使用OneToMany映射到文章(一個用戶創建許多文章);
  • 文章有一個ManyToOne映射到用戶;
  • 類別有自己的OneToMany映射(兒童);
  • 類別有自己的ManyToOne映射(父級)。

在這兩種情況下,這種關係不需要是雙向的,但大部分是時間。

+0

感謝您的評論。我應該使用「set」-tag來指定User> Articles的一對多關係嗎?如果是這樣,那麼在用戶的集合映射中,鍵列屬性的值應該是多少? – Mickel 2009-10-06 15:14:38

+0

我對JPA註釋風格映射比XML Hibernate特定的映射更熟悉。 – cletus 2009-10-06 15:19:39

+0

看起來很簡單。 JPA註解是否也支持關係映射? – Mickel 2009-10-06 15:27:04