Hibernate @SQLDelete不会传播到子表

Hibernate @SQLDelete不会传播到子表,hibernate,Hibernate,我想使用SpringJPA+hibernate实现软删除。假设我有一个物料组表,它与物料主表有一对多关系。在我的mysql数据库中,如果存在子记录,我限制删除父记录 在物料组和物料主实体中,我使用了以下内容 @SQLDelete(sql="update material_group set delete_ind='Y' where material_grp_id = ?") 及 我可以实现一种场景,即如果有无材料,则可以软删除材料组 但是如果子记录存在,我想限制对父记录的软删除。但是,它允许在

我想使用SpringJPA+hibernate实现软删除。假设我有一个物料组表,它与物料主表有一对多关系。在我的mysql数据库中,如果存在子记录,我限制删除父记录

在物料组和物料主实体中,我使用了以下内容

@SQLDelete(sql="update material_group set delete_ind='Y' where material_grp_id = ?")

我可以实现一种场景,即如果有材料,则可以软删除材料组

但是如果子记录存在,我想限制对父记录的软删除。但是,它允许在不更改子条目的情况下软删除父表。任何想法都可以实现这个用例。(编程方法是我最后的选择)

下面给出了代码片段
材料组表

    @Entity
    @Table(name="material_group")
    @NamedQuery(name="MaterialGroup.findAll", query="SELECT m FROM MaterialGroup m")
    @SQLDelete(sql="update material_group set delete_ind='Y' where material_grp_id = ?")
    @Where(clause="delete_ind is NULL")
    public class MaterialGroup implements Serializable {

        @OneToMany(mappedBy="materialGroup", fetch = FetchType.LAZY, cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH})
        @Where(clause="delete_ind is NULL")
        private List<MaterialMaster> materialMasters;

    }
    @Entity
    @Table(name="material_master")
    @NamedQuery(name="MaterialMaster.findAll", query="SELECT m FROM MaterialMaster m")
    @SQLDelete(sql="update material_master set delete_ind='Y' where material_id = ?")
    @Where(clause="delete_ind is NULL")
    public class MaterialMaster implements Serializable {
        //bi-directional many-to-one association to MaterialGroup
        @ManyToOne
        @JoinColumn(name="material_grp_id")
        private MaterialGroup materialGroup;
    }

在父对象中,添加以下内容:

@OneToMany(cascade = CascadeType.ALL, targetEntity = MaterialGroup.class)
@JoinColumn(name = "YOUR_FOREIGN_KEY_COLUMN", nullable = false, 
insertable = false)
private Set<MaterialMaster> materialMaster = new HashSet<MaterialMaster> 
();
@OneToMany(cascade=CascadeType.ALL,targetEntity=MaterialGroup.class)
@JoinColumn(name=“YOUR\u FOREIGN\u KEY\u COLUMN”,nullable=false,
可插入=错误)
私有集materialMaster=新哈希集
();

之后,如果其他规格正确,它应该可以工作

在父对象中,添加以下内容:

@OneToMany(cascade = CascadeType.ALL, targetEntity = MaterialGroup.class)
@JoinColumn(name = "YOUR_FOREIGN_KEY_COLUMN", nullable = false, 
insertable = false)
private Set<MaterialMaster> materialMaster = new HashSet<MaterialMaster> 
();
@OneToMany(cascade=CascadeType.ALL,targetEntity=MaterialGroup.class)
@JoinColumn(name=“YOUR\u FOREIGN\u KEY\u COLUMN”,nullable=false,
可插入=错误)
私有集materialMaster=新哈希集
();
之后,如果其他规格正确,它应该可以工作