Java hibernate:三元关联映射
技术说明: Hibernate注释-3.4.0.GA java 1.5 表格:用户\角色\分支机构 列:用户id、角色id、分支机构id 为公司的不同分支机构为用户分配不同的角色 现在我有了一个JavaPOJO类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
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”)映射合同;}在本例中,如果员工有多个合同,它将不起作用,这在三元关联中非常可能。在这种情况下,用户映射是什么样子的?