2013-02-05 66 views
0

在我的應用程序中,我有兩個類:ActivityUser。它們之間的關係如下:Hibernate類設計,持久化List和HashMap

  • 活動可以有多個用戶。我在Activity類中有一個List<User>的字段。
  • 用戶可以屬於多個活動,並且在每個活動中他/她可以具有特定角色。我已在User中對Map<String, String>進行了細化,其中MapkeyactivityId,值爲roleId。我沒有任何Role表,因爲只有四個預定義的角色。

我無法理解應該有UserActivity之間的任何ManyToOneOneToManyManyToMany關係。或者我應該簡單地將整個List<User>對象連同ActivityMap<String, String>User一起存儲在數據庫中。如果是這樣,我怎麼能存儲整個ListMap

任何指針都會對我很有幫助。

回答

1

我首先想想如何設計數據庫。如果我理解正確的話,你將有3個表:

  • 用戶
  • 活動
  • 參與

在參與將有一個外鍵的用戶,一個外鍵的活動,和一個角色。

所以我會映射,僅僅作爲

  • 用戶已經參與
  • 活動一對多與參與

一個一對多當然,你可以讓這兩個協會是雙向的。

+0

謝謝。你是否指「參與」的「角色」? –

+0

不,我的意思是一個具有用戶的ManyToOne,具有活動的ManyToOne和角色(應該作爲枚舉實現)的實體。所以參與是一個實體,它模擬一個給定用戶參與給定角色的給定活動的事實。 –

+0

謝謝。有效。 –

1

User <-> Activitymany to many。導航可以是bidirectional - 選擇是你的。 您還需要具有三個屬性(userId,ActivityId,roleId)的UserActivityMap對象。 RoleId可以是一個枚舉或一個RoleObject的ID。在後者的情況下,您可以定義查找表並將RoleObject映射到該表。