【发布时间】:2021-09-03 17:09:57
【问题描述】:
我有 2 个实体(用户、教师),用户是父亲...
当我想通过本机查询删除用户时,它会给我这个错误 (Cannot delete or update a parent row: a foreign key constraint fail)
虽然我写过:
@OneToOne(mappedBy = "user_id",fetch = FetchType.EAGER,
cascade = CascadeType.ALL , orphanRemoval = true )
在用户实体中的 Teacher 引用处 但是当我尝试使用 JPA 派生方法 deleteByEmail() .. 它奏效了!
是什么原因?
【问题讨论】:
-
启用 sql 日志记录我猜 spring data jpa 可能正在执行 2 个 SQL 查询来删除这些行。
-
在 JPA 中启用 SQL 日志记录,您将看到两种情况下查询的差异。在第一种情况下,由于外键约束,删除失败。对于第二种情况,很可能首先发生子删除,因此不会引起问题。
-
是的,我知道,这就是发生的事情,但是对于本机查询,由于级联类型正确,它还必须删除 2 个实体!!!??
标签: java sql spring spring-boot jpa