Hibernate引发无法删除或更新父行:外键约束失败
我正在研究一个基本示例来测试cascade delete
操作,但出现异常。
我有以下实体:
@Entitypublic class Employee {
@Id
@Column(name = "EMP_ID")
private long id;
private String name;
@OneToMany(mappedBy = "employee")
@Cascade(value = { CascadeType.REMOVE, CascadeType.SAVE_UPDATE })
private List<EmpDetails> details = new ArrayList<EmpDetails>();
}
@Entitypublic class EmpDetails {
@Id
private long id;
private int info;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "EMP_ID")
private Employee employee;
}
现在我在数据库中有员工ID为10的记录,在员工详细信息表中有相应的记录。
现在,当我在查询下面运行时:
session.beginTransaction(); session.delete(new Employee(10)); // here 10 is the ID of the employee
session.getTransaction().commit();
session.close();
我在想hibernate将删除员工记录和相应的员工详细信息记录,因为我已设置要删除的层叠类型。但我得到异常为:
引起原因:com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败
有人可以帮我在这里测试级联删除选项吗?
回答:
REMOVE级联类型用于标准JPA remove()
操作。对于本地Hibernate
delete()
操作,您需要使用Hibernate专有注释:
@Cascade(CascadeType.DELETE)
以上是 Hibernate引发无法删除或更新父行:外键约束失败 的全部内容, 来源链接: utcz.com/qa/407084.html