我正在尝试删除“LearnItem”类型的实体
@Entity
public class LearnItem implements Comparable<LearnItem>, Serializable {
private static final long serialVersionUID = 7526471111622776111L;
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
@OneToMany(mappedBy="learnItem", cascade = { CascadeType.ALL })
protected List<StudentItemRecord> studentItemRecords;
@OneToMany(mappedBy="learnItem", cascade = { CascadeType.ALL })
protected List<Result> results;
}
但是,我得到“无法删除或更新父行:外键约束失败(wcdtg7jkp873w8ob
。student_item_record
,CONSTRAINT FK_ockk47ux0gb08lnuisradomer
FOREIGN KEY({{1参考learn_item_id
(learn_item
))“错误。
在StudentItemRecord中,我有一个LearnItem的参考:
id
我不知道为什么会出现这个错误,CascadeType.ALL设置是不是应该删除列表中的所有StudentItemRecords,避免出现外键约束问题?
答案 0 :(得分:0)
查看您的数据库架构。 JPA配置不会覆盖您的数据库架构,因此如果您在JPA中限制删除,则默认情况下不会删除所有依赖项。
或者例如,您可能有这样的依赖:
A -> B -> C
A -> B = Cascade
B -> C = Cascade
在这种情况下,如果删除A,将删除B和C. 如果是在DB中,则有
A -> B = Cascade
B -> C = Restrict
不会删除任何内容,因为B和C之间的FK会阻止它。