【发布时间】:2017-05-01 15:59:02
【问题描述】:
我正在尝试删除“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 (learn_item_id) REFERENCES learn_item ( id))" 错误。
在 StudentItemRecord 中,我有 LearnItem 的参考:
@ManyToOne
private LearnItem learnItem;
我不知道为什么会出现这个错误,CascadeType.ALL 设置不是应该删除列表中的所有 StudentItemRecords,避免外键约束问题吗?
【问题讨论】:
-
您可能正在删除一个没有正确填充学生记录列表的 LearnItem。没有代码,很难说更多。
-
正确填充是什么意思?
-
您是在调用 EntityManager.remove(),使用存储库还是查询?
标签: java hibernate jpa one-to-many cascading-deletes