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