Java 级联删除不';删除中间实体时无法正常工作

Java 级联删除不';删除中间实体时无法正常工作,java,hibernate,Java,Hibernate,我有三个实体:爷爷、爸爸和孩子,他们有着预期的关系 爷爷有很多爸爸,爸爸也有很多孩子 @Entity @Table(name = "Grandpa") public class Grandpa { @Id @GeneratedValue(generator = "increment") @GenericGenerator(name = "increment", strategy = "increment") @Column(name = "id")

我有三个实体:爷爷、爸爸和孩子,他们有着预期的关系 爷爷有很多爸爸,爸爸也有很多孩子

@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;
}
@实体
@表(name=“爷爷”)
公课爷爷{
@身份证
@生成值(生成器=“增量”)
@GenericGenerator(name=“increment”,strategy=“increment”)
@列(name=“id”)
私有int-id;
@CreationTimestamp
@时态(TemporalType.TIMESTAMP)
@列(name=“created_at”)
私人日期创建日期;
@UpdateTimestamp
@时态(TemporalType.TIMESTAMP)
@列(name=“updated_at”)
私人日期更新日期;
@OneToMany(cascade={CascadeType.ALL},mappedBy=“爷爷”)
私有集子项=新哈希集(0);
....
}
@实体
@表(name=“Father”)
公课父亲{
@身份证
@生成值(生成器=“增量”)
@GenericGenerator(name=“increment”,strategy=“increment”)
@列(name=“id”)
私有int-id;
@CreationTimestamp
@时态(TemporalType.TIMESTAMP)
@列(name=“created_at”)
私人日期创建日期;
@UpdateTimestamp
@时态(TemporalType.TIMESTAMP)
@列(name=“updated_at”)
私人日期更新日期;
@OneToOne(cascade={CascadeType.ALL})
二等兵爷爷;
@OneToMany(cascade={CascadeType.ALL},mappedBy=“父”)
私有集子项=新哈希集(0);
....
}
@实体
@表(name=“Child”)
公营儿童{
@身份证
@生成值(生成器=“增量”)
@GenericGenerator(name=“increment”,strategy=“increment”)
@列(name=“id”)
私有int-id;
@CreationTimestamp
@时态(TemporalType.TIMESTAMP)
@列(name=“created_at”)
私人日期创建日期;
@UpdateTimestamp
@时态(TemporalType.TIMESTAMP)
@列(name=“updated_at”)
私人日期更新日期;
@OneToOne(cascade={CascadeType.ALL})
私人父亲;
}
当我删除祖父时,他所有的父亲和孩子都会被删除,但当我删除父亲时,他的孩子会留在数据库中

我遗漏了什么?

发现了问题

在实现删除时,我使用了session.delete(对象) 在实现删除父亲时,我使用纯sql…

发现了问题

在实现删除时,我使用了session.delete(对象) 在实现删除父亲时,我使用了纯sql