我有两个实体。 A和B. A
和B
之间的关系为@ManyToMany
。所以我已经为项目所需的C
关系引入了第三个实体@ManyToMany
。
我的实体类如下所示。
@Entity
class A
{
@OneToMany(cascade = CascadeType.ALL, mappedBy = "a")
List<C> cList;
}
@Entity
class B
{
@OneToMany(cascade = CascadeType.ALL, mappedBy = "b")
List<C> cList;
}
@Entity
class C
{
@ManyToOne
@JoinColumn(name = "ref_a")
A a;
@ManyToOne
@JoinColumn(name = "ref_b")
B b;
}
现在,我想要删除实体A
或B
的记录,然后它应删除C
中的相应记录。
但是当我删除A
或B
的记录时,它会显示
无法删除或更新父行:外键约束失败
从A
或B
删除记录所需的其他配置,还会删除C
中的相应记录?
答案 0 :(得分:2)
您不必创建实体来映射“多对多”表。 ManyToMany JPA注释就在那里。以下是如何操作的示例。
@Entity
public class Team {
@ManyToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST }, mappedBy="teams")
private List<Match> matches;
}
@Entity
public class Match {
@ManyToMany(cascade = { CascadeType.MERGE, CascadeType.PERSIST })
@JoinTable(
name="MATCH_TEAM",
joinColumns={@JoinColumn(name="MATCH_ID", referencedColumnName="ID")},
inverseJoinColumns={@JoinColumn(name="TEAM_ID", referencedColumnName="ID")})
private List<Team> teams;
}