繁体   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