Hibernate许多对许多人来说

时间:2012-07-10 08:02:43

标签: hibernate annotations many-to-many composite-primary-key

我正在尝试使用注释将现有数据库映射到Hibernate。 问题如下。

'organization'和'organization_roles'有多对多关系,在一个解决方案中解决 表'organization_has_roles'使用两个主键作为连接表中的复合主键。

接下来是'用户'表。用户可以在多个组织中拥有单个角色。这在名为'users_has_organizations_and_role'的连接表中再次得到解决,该连接表具有'user_id','organization_id'和'organization_role_id'的复合主键以及'user_id'和'organization_id'上的unique_index。

'users_has_organizations_and_role'引用'organization_has_roles'复合主键(organization_id,organization_role_id)和users表(user_id)

我无法找到有关这个问题的例子。

是否可以映射此图。我应该使用哪些注释以及如何使用?

我正在使用Hibernate 4,虽然它可能无关紧要..

1 个答案:

答案 0 :(得分:1)

这种方法的主要问题是你有一个不可映射的ORM不匹配:你的数据库中有一个实体(organization_has_roles),它被转换为OO中的关系。由于此关系不是实体,并且没有@Id,因此无法将其引用到另一个实体中。

解决方案是将数据库实体organization_has_roles映射到JPA / Hibernate实体,使用复合键或合成键(无论您喜欢什么)。然后,您可以在User模型中引用此实体。