簡體   English   中英

休眠-兩個類之間的多個多對多關聯

[英]Hibernate - multiple many-to-many associations between two classes

我有兩個實體,分別稱為AB 這些實體可能處於三種不同的多對多關系之一。

如何在Hibernate中建模? 這個想法是,A類將具有以下字段:

Set<B> relationX;
Set<B> relationY;
Set<B> relationZ;

同樣,B類將具有以下字段:

Set<A> relationX;
Set<A> relationY;
Set<A> relationZ;

這兩個類都具有所有三個字段,因為我希望關聯是雙向的。

具有像這樣的“標准” Hibernate多對多注解...

@JoinTable(name = "A_relX_B",
        joinColumns = {@JoinColumn(name = "A_ID")},
        inverseJoinColumns = {@JoinColumn(name = "B_ID")}
)

...將無法工作,因為無法區分這三個獨立的關系。 我將如何實現? 還是我需要手動分解m-n關系?

您已經走對了路:

public class A {
  @ManyToMany
  @JoinTable(name = "A_relX_B",
    joinColumns = {@JoinColumn(name = "A_ID")},
    inverseJoinColumns = {@JoinColumn(name = "B_ID")}
  )
  Set<B> relationX;

  @ManyToMany
  @JoinTable(name = "A_relY_B",
    joinColumns = {@JoinColumn(name = "A_ID")},
    inverseJoinColumns = {@JoinColumn(name = "B_ID")}
  )
  Set<B> relationY;

  @ManyToMany
  @JoinTable(name = "A_relZ_B",
    joinColumns = {@JoinColumn(name = "A_ID")},
    inverseJoinColumns = {@JoinColumn(name = "B_ID")}
  )
  Set<B> relationZ;
}

基本上,這些是獨立的關聯,只要每個關聯都映射到單獨的關系表,就可以有一個(最常見的情況)或一百個。

B側也是如此(不要忘記mappedBy在每個關聯上選擇反側)。

我不知道是否有一種簡單的方法可以在不規范表中多對多關系的情況下完成此任務。 在關系數據庫中具有多對多關系通常被認為是不行,並且需要交叉引用表來管理它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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