我在Merise或UML中学习如果我们有多对多关系的表,我们必须在关系模型中创建一个新表(在Mysql中),这个表将包含其他表的两个id。登记/> 但我们真的必须创建一个新的,因为我认为我们不需要hibernate和mapping 因为每个表(实体)都有一个另一个表(实体)的列表 那么处理多对多关系的正确方法是什么?是否创建新表?
答案 0 :(得分:1)
通常,您需要normalise数据库中的多对多关系(有些专家可能会choose not to)。但是Spring并不是其中之一,它只是简化了manual normalisation process的一部分。
答案 1 :(得分:1)
你仍然需要一个'Join Table',它将包含两列,其中包含两个其他表的外键。
使用hibernate,当一个实体有一个List时,你仍然需要能够在桌面上存储这种关系。
例如,如果你想要TableA和TableB之间的多对多..
//TableA class:
@ManyToMany
@JoinTable(name="TABLEA_TABLEB",
joinColumns=
@JoinColumn(name="TABLEA_ID", referencedColumnName="ID"),
inverseJoinColumns=
@JoinColumn(name="TABLEB_ID", referencedColumnName="ID")
)
public Set<TableB> bees;
//TableB Class:
@ManyToMany(mappedBy="bees")
public Set<TableA> ays;
这将创建一个包含两列的连接表('tablea_id','tableb_id');这些列将与主要实体的“ids”(主键)具有外键关系。
答案 2 :(得分:0)
您提到了UML:
如果是Association Class
,join table
除了keys
之外还会有“额外”列。