![](/img/trans.png)
[英]Spring JPA mapping with OpenJPA entities with junction table (many-to-many)
[英]Using Many-To-Many junction table in another relation
我對Hibernate ManyToMany映射有疑問。 我有兩個類A和B,它們之間的映射是由Hibernate解決的ManyToMany映射:
@Entity
@Table(name="A")
public class A {
@Id
@GeneratedValue
private Long id;
@ManyToMany
@JoinTable(name="A_B", joinColumns=@JoinColumn(name="A_id"), inverseJoinColumns=@JoinColumn(name="B_id"))
private Set Bs;
}
@Entity
@Table(name="B")
public class B {
@Id
@GeneratedValue
private Long id;
@ManyToMany(mappedBy="b")
private Set As;
}
用戶和組的外鍵是“ A_id”和“ B_id”。 聯接表稱為A_B。
現在,我想添加C。我希望A_B與C有關系,與C和A_B創建多對多關系,我可以稱其為A_B_C。
@Entity
@Table(name="C")
public class C {
@Id
@GeneratedValue
private Long id;
@ManyToMany
@JoinTable(name="A_B", joinColumns=@JoinColumn(name="C_id"), inverseJoinColumns=@JoinColumn(name="?????"))
private Set A_Bs; // Don't have any UserGroup entity !
}
編輯:因此,我將創建A_B實體,其中A和B與A_B具有2個@OneToMany關系。
問:關於主鍵,A_B的最佳解決方案是什么? 嵌入式主鍵還是生成的ID? 我不想重復(user_id,group_id):/只有唯一約束足夠了嗎?
A_B <-> C關系呢? 我猜不需要任何實體A_B_C,@ ManyToMany就足夠了...
我將不勝感激任何幫助。
非常感謝!
我認為您不需要與Group
User
關聯,因為Group
就像字典一樣。
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue
private Long id;
@ManyToMany
@JoinTable(name = "users_groups")
private Set<Group> groups;
}
@Entity
@Table(name="groups")
public class Group {
@Id
@GeneratedValue
private Long id;
}
而且您需要一個@ManyToMany
關聯才能在Newsletter
中進行Group
@Entity
@Table(name="newsletters")
public class Newsletter {
@Id
@GeneratedValue
private Long id;
@ManyToMany
@JoinTable(name="newsletters_groups")
private Set<Group> groups;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.