簡體   English   中英

在另一個關系中使用多對多連接表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM