1
Technology说明: 休眠annotation- 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>,但我怀疑我是否可以使用hibernate的嵌套集合。
请帮我一把!
如果问题不可理解或不可表现形式,请告诉我。
我想避免创建一个不直接映射到实体的类。你的解决方案是可行的,但有没有其他可能的方式避免创建除角色,用户,分支以外的任何其他类。就像使用一些集合或一些收集包装一样。谢谢你的回答。 – 2010-12-15 07:53:03
@ Maddy.Shik Hibernate似乎支持三元关联。请参阅http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/collections.html#collections-ternary。这会为你工作吗? – 2010-12-16 19:22:01
@实体 public class Company { @Id int id; ... @OneToMany //单向 @MapKeyJoinColumn(名称= “EMPLOYEE_ID”) 地图<雇员,合同>合同; }在这个例子中,如果员工有多个合同,它将不起作用,这在三元关联中非常可能。 – 2010-12-17 15:36:55