我有两个使用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的外键时,它表示在删除时限制更新
答案 0 :(得分:0)
在A类中将orphanRemoval属性设置为true
像这样:@OneToOne(mappedBy = "a", cascade = CascadeType.ALL, orphanRemoval = true)