hibernate:三元关联映射

时间:2010-12-11 04:49:14

标签: java hibernate map hibernate-annotations

技术说明: Hibernate注释 - 3.4.0.GA java 1.5

表格:users_roles_branches :user_id,role_id,branch_id

为公司的不同分支机构分配不同的角色。

现在我有一个java pojo类

     public class branch
     {
                @ManyToMany
             @JoinTable(name = "users_roles_branches", joinColumns = {   @JoinColumn(name="branch_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") })
             @MapKeyManyToMany(joinColumns = { @JoinColumn(name = "user_id", unique = false) })

                public Map<User, Role> getUserRoleMap() {
          return userRoleMap;
           }
     } 

基本要求是检索分配给分支中不同用户的角色列表。

面临的问题:由于一个用户可以分配多个角色,因此map不适用于用户角色映射数据。

一个解决方案可能是Map&gt;,但我怀疑我是否可以在hibernate中使用嵌套集合。

请帮帮我!

如果问题不可理解或无法表达,请告知我们。

1 个答案:

答案 0 :(得分:2)

我的建议是在您的域模型RoleAssignment中引入一个新概念:

class RoleAssignment {
  private User user; 
  private Branch branch;
  private Role role;
}

实体UserBranchRole应与RoleAssignment建立1:N的关系。例如:

class User { 
  private Set<RoleAssignment> roleAssignemnts;
}
相关问题