我有两个使用 Spring 和 Hibernate 的实体
实体A:
@Entity
@Table(name = "A")
public class A {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "a")
private B b;
这里我与实体 B 存在一对一的关系,该关系的所有者是实体 A。
实体B:
@Entity
public class B{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@OneToOne
@JoinColumn(name = "a_ID")
private A a;
保存实体没有问题。实体 B 获取数据库中实体 A 的 ID。 但是当我删除实体A时,我也想删除属于A的实体B。
当我删除时,出现错误:
MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails
我认为我在实体中的声明是正确的。这里有什么问题吗?
编辑
当我检查实体 B 的表,特别是实体 A 的外键时,它显示“更新时受限”和“删除时受限”
最佳答案
在 A 类中将 orphanRemoval 属性设置为 true
像这样:@OneToOne(mappedBy = "a",cascade = CascadeType.ALL,orphanRemoval = true)
关于mysql - 无法删除父项和子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46787747/