Hibernate引发无法删除或更新父行:外键约束失败

我正在研究一个基本示例来测试cascade delete操作,但出现异常。

我有以下实体:

@Entity

public 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>();

}

@Entity

public 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

回到顶部