【发布时间】:2018-10-19 10:02:40
【问题描述】:
我有一个表 Department ,其中包含一对多映射到 Employee 表并具有级联类型。
@OneToMany(mappedBy="department",orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@Fetch(FetchMode.JOIN)
private List<Employee> emp;
当我在 Java 代码中从部门表中删除记录时,使用带有主键作为参数的 Hibernate *Delete 函数,*它是从部门表中删除记录以及在员工表中删除与其相关的所有记录。 当我在查询下运行时(Dep_ref 不是primaryKey)
delete from Department where Dep_ref= 99999;
所以它应该删除Department表中的所有记录,以及Employee表中的相关记录。 但是,我遇到了错误。
SQL 错误:ORA-02292:违反完整性约束 - 子记录 成立 02292. 00000 - “违反完整性约束 (%s.%s) - 找到子记录” *原因:试图删除具有外来的父键值 依赖。 *操作:先删除依赖项,然后删除父项或禁用约束。
谁能帮我解决这个问题。
【问题讨论】:
-
尝试初始化您的
emp集合:private List<Employee> emp = new ArrayList<>();并确保在您删除Department时获取它(因为它是惰性的)。
标签: java sql hibernate spring-boot cascading-deletes