删除多个关系spring数据jpa中的记录
我有两个实体。A和B.删除多个关系spring数据jpa中的记录,spring,spring-data,spring-data-jpa,Spring,Spring Data,Spring Data Jpa,我有两个实体。A和B.A和B之间的关系是@manytomy。所以我为项目所需的@manytomy关系引入了第三个实体C 我的实体类如下所示 @Entity class A { @OneToMany(cascade = CascadeType.ALL, mappedBy = "a") List<C> cList; } @Entity class B { @OneToMany(cascade = CascadeType.ALL, mappedBy = "b")
A
和B
之间的关系是@manytomy
。所以我为项目所需的@manytomy
关系引入了第三个实体C
我的实体类如下所示
@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;
}
@实体
甲级
{
@OneToMany(cascade=CascadeType.ALL,mappedBy=“a”)
列表cList;
}
@实体
B类
{
@OneToMany(cascade=CascadeType.ALL,mappedBy=“b”)
列表cList;
}
@实体
C类
{
@许多酮
@JoinColumn(name=“ref_a”)
A A;
@许多酮
@JoinColumn(name=“ref_b”)
B B;
}
现在,我想删除实体A
或B
的记录,然后它应该从C
中删除相应的记录。
但是当我删除A
或B
的记录时,它会显示
无法删除或更新父行:外键约束失败
它需要从
A
或B
中删除记录并从C
中删除相应记录的其他配置是什么?您不必创建实体来映射多对多表。这里有很多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;
}
@实体
公开课小组{
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST},mappedBy=“teams”)
私人列表匹配;
}
@实体
公开课比赛{
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST})
@可接合(
name=“比赛团队”,
joinColumns={@JoinColumn(name=“MATCH_ID”,referencedColumnName=“ID”)},
inverseJoinColumns={@JoinColumn(name=“TEAM\u ID”,referencedColumnName=“ID”)}
私人名单小组;
}