Hibernate类设计,持久化List和HashMap

时间:2013-02-05 09:58:46

标签: java hibernate annotations

在我的应用程序中,我有两个类:ActivityUser。他们之间的关系是:

  • 活动可以有多个用户。我在List<User> class。
  • 中有一个字段Activity
  • 用户可以属于多个活动,并且在每个活动中他/她可以具有特定角色。我在Map<String, String>中对User进行了细化,其中key的{​​{1}}为Map,值为activityId。我没有任何roleId表,因为只有四个预定义的角色。

我无法理解RoleManyToOne之间是否存在任何OneToManyManyToManyUser关系。或者我应该简单地将整个Activity对象与List<User>Activity一起存储在数据库中Map<String, String>。如果是这样,我如何存储整个UserList

任何指针对我都非常有帮助。

2 个答案:

答案 0 :(得分:1)

我首先考虑一下设计在数据库中的作用。如果我理解正确,你将有3个表:

  • 用户
  • 活动
  • 参与

其中,参与者将拥有用户的外键,活动的外键和角色。

所以我将其简单地映射为

  • 用户有参与的OneToMany
  • 活动有一个参与的OneToMany

当然,你可以将这两个关联双向化。

答案 1 :(得分:1)

User <-> Activitymany to many。导航性可以是bidirectional - 选择权属于您。 您还需要一个具有三个属性的UserActivityMap对象(userId,ActivityId,roleId)。 RoleId可以是RoleObject的枚举或id。如果是后者,您可以定义查找表并将RoleObject映射到该表。