Spring 外键约束@多个关系阻止删除

Spring 外键约束@多个关系阻止删除,spring,spring-boot,jpa,Spring,Spring Boot,Jpa,我有三个相关记录(会议,提交记录,提交作者记录)。每个提交记录都有一个会议对象和一个列表 当我删除会议记录时,如果SubmissionRecord与该会议关联,那么它也应该级联并删除。但是,我一直得到一个java.sql.SQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(`viz`.`submission\u record\u author\u set`,约束`fkgnq52l26bitkmojk1oiuaki1` 外键(`sub

我有三个相关记录(
会议
提交记录
提交作者记录
)。每个
提交记录
都有一个
会议
对象和一个
列表

当我删除会议记录时,如果SubmissionRecord与该会议关联,那么它也应该级联并删除。但是,我一直得到一个
java.sql.SQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(`viz`.`submission\u record\u author\u set`,约束`fkgnq52l26bitkmojk1oiuaki1`
外键(`submission\u record\u s\u id`)引用`submission\u record`(`s\u id`))
错误消息

submission\u record\u author\u set
是自动创建的,我没有映射到它的实体

我理解问题在于
提交记录\u作者集
行阻止删除
提交记录
,并尝试了此处描述的@PreRemove方法(),但无效。也许很多注释都有问题?因为我在SubmissionAuthorRecord中也没有看到等效的注释

@Entity
public class SubmissionRecord {

    @Id
    @GenericGenerator(name = "UseExistingIdOtherwiseGenerateUsingIdentity", strategy = "xyz")
    @GeneratedValue(generator = "UseExistingIdOtherwiseGenerateUsingIdentity")
    @JsonSerialize(using = ToStringSerializer.class)
    @Column(name = "s_id")
    private Long id;

    @Exportable(name = "Submission Id", nameInDB = "s_submission_id")
    @Column(name = "s_submission_id")
    private String submissionId;

    // internal set of authors of the associated
    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JsonIgnore
    private List<SubmissionAuthorRecord> authorSet;

    @JoinColumn(name="conference_id")
    @ManyToOne(fetch = FetchType.EAGER)
    @OnDelete(action = OnDeleteAction.CASCADE)
    private Conference conference;

    //...
}

@Entity
public class Conference {

    @Id
    @GenericGenerator(name = "UseExistingIdOtherwiseGenerateUsingIdentity", strategy = "xyz")
    @GeneratedValue(generator = "UseExistingIdOtherwiseGenerateUsingIdentity")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    private String creatorIdentifier;

    private String conferenceName;

    private String conferenceYear;
}

@Entity
public class SubmissionAuthorRecord {

    @Id
    @GenericGenerator(name = "UseExistingIdOtherwiseGenerateUsingIdentity", strategy = "xyz")
    @GeneratedValue(generator = "UseExistingIdOtherwiseGenerateUsingIdentity")
    @JsonSerialize(using = ToStringSerializer.class)
    @Column(name = "s_author_id")
    private Long id;

    private String dataSet;

    @Column(name = "s_author_name")
    private String name;
}
@实体
公共类提交记录{
@身份证
@GenericGenerator(name=“UseExistingIdOtherwiseGenerateUsingIdentity”,strategy=“xyz”)
@GeneratedValue(generator=“UseExistingIdOtherwiseGenerateUsingIdentity”)
@JsonSerialize(使用=ToStringSerializer.class)
@列(name=“s_id”)
私人长id;
@可导出(name=“提交Id”,nameInDB=“提交Id”)
@列(name=“s\U提交\U id”)
私有字符串submissionId;
//关联文档的内部作者集
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@杰索尼奥雷
私有列表作者集;
@JoinColumn(name=“会议id”)
@manytone(fetch=FetchType.EAGER)
@OnDelete(action=OnDeleteAction.CASCADE)
非公开会议;
//...
}
@实体
公开课会议{
@身份证
@GenericGenerator(name=“UseExistingIdOtherwiseGenerateUsingIdentity”,strategy=“xyz”)
@GeneratedValue(generator=“UseExistingIdOtherwiseGenerateUsingIdentity”)
@JsonSerialize(使用=ToStringSerializer.class)
私人长id;
私有字符串创建者标识符;
私有字符串conferenceName;
私人字符串会议年;
}
@实体
公共类提交AuthorRecord{
@身份证
@GenericGenerator(name=“UseExistingIdOtherwiseGenerateUsingIdentity”,strategy=“xyz”)
@GeneratedValue(generator=“UseExistingIdOtherwiseGenerateUsingIdentity”)
@JsonSerialize(使用=ToStringSerializer.class)
@列(name=“s\u author\u id”)
私人长id;
私有字符串数据集;
@列(name=“s\u author\u name”)
私有字符串名称;
}
submission\u author\u record\u set
表如下所示:

您是否尝试添加“cascade=true”@r注释的含义是什么?是的,我有!