我有 3 个实体:爷爷、父亲和 child ,具有预期的关系 爷爷有很多父亲,父亲有很多 child
@Entity
@Table(name = "Grandpa")
public class Grandpa {
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
@Column(name = "id")
private int id;
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_at")
private Date createdAt;
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "updated_at")
private Date updatedAt;
@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "grandpa")
private Set<Father> children = new HashSet<Father>(0);
....
}
@Entity
@Table(name = "Father")
public class Father {
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
@Column(name = "id")
private int id;
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_at")
private Date createdAt;
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "updated_at")
private Date updatedAt;
@OneToOne(cascade = {CascadeType.ALL})
private Grandpa grandpa;
@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "father")
private Set<Child> children = new HashSet<Child>(0);
....
}
@Entity
@Table(name = "Child")
public class Child {
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
@Column(name = "id")
private int id;
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_at")
private Date createdAt;
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "updated_at")
private Date updatedAt;
@OneToOne(cascade = {CascadeType.ALL})
private Father father;
}
当我删除爷爷时,他所有的父亲和 child 也会被删除,但是当我删除父亲时,他的 child 仍保留在数据库中
我错过了什么?
最佳答案
发现问题...
在实现删除爷爷时,我使用了 session.delete(object) 在实现删除Father时我使用了纯sql...
关于java - 删除中间实体时级联删除无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44409258/