我有一个表部门,其中有一对多映射到Employee表并且所有级联类型都是。
@OneToMany(mappedBy="department",orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@Fetch(FetchMode.JOIN)
private List<Employee> emp;
当我从Java代码中删除部门表中的记录时,使用带有主键的Hibernate *删除功能作为参数,*它是从部门表中删除记录以及删除员工表中的所有相关记录。 当Iam在查询下运行时(Dep_ref不是primaryKey)
delete from Department where Dep_ref= 99999;
因此应删除Department Table中的所有记录以及Employee表中的相关记录。 但,Iam低于错误。
SQL错误:ORA-02292:违反了完整性约束 - 子记录 发现 02292. 00000 - “违反完整性约束(%s。%s) - 发现子记录” *原因:尝试删除具有外部的父键值 依赖。 *操作:先删除依赖项,然后删除父项或禁用约束。
任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
映射中的问题。这是错误的方向。您应该在Employee上创建外键以引用Department。
// Departments
@OneToMany(mappedBy="departments", cascade=CascadeType.ALL)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Set<Employee> emp;
// Employee
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="department_id" , referencedColumnName="id", insertable=false, updatable=false)
private Departments department;