Java Hibernate类设计、持久化列表和HashMap

Java Hibernate类设计、持久化列表和HashMap,java,hibernate,annotations,Java,Hibernate,Annotations,在我的应用程序中,我有两个类:Activity和User。它们之间的关系是: 一个活动可以有多个用户。为此,我在活动课程中有一个字段列表 一个用户可以属于多个活动,并且在每个活动中他/她可以有一个特定的角色。我在User中优化了Map,其中该Map的键是活动ID,值是roleId。我没有任何角色表,因为只有四个预定义的角色 我无法理解用户和活动之间是否存在任何多人或多人关系。或者我应该简单地将整个列表对象连同活动和映射一起存储在数据库中。如果是,如何存储整个列表和地图 任何指针都会对我很有帮

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

  • 一个活动可以有多个用户。为此,我在
    活动
    课程中有一个字段
    列表
  • 一个用户可以属于多个活动,并且在每个活动中他/她可以有一个特定的角色。我在
    User
    中优化了
    Map
    ,其中该
    Map
    键是
    活动ID
    ,值是
    roleId
    。我没有任何
    角色
    表,因为只有四个预定义的角色
我无法理解
用户
活动
之间是否存在任何
多人
多人
关系。或者我应该简单地将整个
列表
对象连同
活动
映射
一起存储在数据库中。如果是,如何存储整个
列表
地图


任何指针都会对我很有帮助。

我会首先考虑数据库中的设计。如果我理解正确,您将有3个表:

  • 使用者
  • 活动
  • 参与
其中,参与将具有用户外键、活动外键和角色

所以我将把它简单地映射为

  • 用户有一个参与的OneToMany
  • 活动有一个有人参与的独角戏
当然,您可以使这两个关联双向。

用户活动
多对多
。导航能力可以是双向的,由您选择。
您还需要一个具有三个属性(userId、ActivityId、roleId)的
UserActivityMap
对象。RoleId可以是枚举或RoleObject的id。对于后者,您可以定义一个查找表并将RoleObject映射到该表。

谢谢。你指的是参与的
角色吗?不,我指的是一个实体,它有一个带用户的ManyToOne、一个带活动的ManyToOne和一个角色(应该作为枚举实现)。因此,参与是一个实体,它模拟给定用户以给定角色参与给定活动的事实。