Java hibernate:三元关联映射

Java hibernate:三元关联映射,java,hibernate,map,hibernate-annotations,Java,Hibernate,Map,Hibernate Annotations,技术说明: Hibernate注释-3.4.0.GA java 1.5 表格:用户\角色\分支机构 列:用户id、角色id、分支机构id 为公司的不同分支机构为用户分配不同的角色 现在我有了一个JavaPOJO类 public class branch { @ManyToMany @JoinTable(name = "users_roles_branches", joinColumns = { @JoinColum

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

表格:用户\角色\分支机构 :用户id、角色id、分支机构id

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

现在我有了一个JavaPOJO类

     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;
           }
     } 
公共类分支
{
@许多
@JoinTable(name=“users\u roles\u branchs”,joinColumns={@JoinColumn(name=“branch\u id”)},inverseJoinColumns={@JoinColumn(name=“role\u id”)})
@MapKeyManyToMany(joinColumns={@JoinColumn(name=“user\u id”,unique=false)})
公共映射getUserRoleMap(){
返回userRoleMap;
}
} 
基本要求是检索分配给分支中不同用户的角色列表

面临的问题:由于一个用户可以分配多个角色给它,所以映射对用户角色映射数据无效

一个解决方案可能是Map>,但我怀疑是否可以将嵌套集合与hibernate一起使用

请帮帮我


如果问题不可理解或不具有代表性,请让我知道。

我的建议是在您的域模型
角色分配中引入一个新概念:

class RoleAssignment {
  private User user; 
  private Branch branch;
  private Role role;
}
实体
用户
分支机构
角色
应与
角色分配
具有1:N关系。例如:

class User { 
  private Set<RoleAssignment> roleAssignemnts;
}
类用户{
私人角色设置;
}

我希望避免创建未直接映射到实体的类。您的解决方案是可行的,但是否有其他可能的方法避免创建除角色、用户、分支以外的任何其他类。比如使用某个集合或集合的某个包装器。谢谢你的回答。@Maddy.Shik Hibernate似乎支持三元关联。请看。这对您有用吗?@Entity public class Company{@Id int Id;..@OneToMany//unidirectional@MapKeyJoinColumn(name=“employee_Id”)映射合同;}在本例中,如果员工有多个合同,它将不起作用,这在三元关联中非常可能。在这种情况下,用户映射是什么样子的?