在Spring启动时使用级联类型DELETE实现软删除

时间:2018-04-09 17:42:09

标签: java spring spring-boot spring-data-jpa

我在Spring启动应用程序中实现了软删除。这看起来像:

Program.java

public class Program{
    //other attributes
    private boolean deletedFlag;

    //getter setters       
}

program实体的存储库中,我在查询后触发仅返回已删除标记false的实体。

public interface ProgramRepository{
    //other methods
    Program findByDeletedFlagFalse();
}

所以这个实现工作得非常好。但问题是,我是另一个实体(名为' Major'),其中我注入了programs的列表。所以major实体看起来像:

public class Major{
    //other fields
    List<Program> programs;
    //getter setters
}

现在,当我删除程序实体时,即使它们被删除,它仍会出现在主要实体中。所以基本上我的回答如下:

"major":{
      //other fields
      "program": [{
           //other fields
           "deletedFlag": true
       }]
 }     

但是,如果我们删除子实体,那么预期的行为应该是这样,父级不应该列出它。那我在这里错过了什么?

在spring boot中有没有其他方法可以实现软删除?我已经看过这个:Hibernate Soft Delete using update Cascade,但似乎是使用hibernate代替Spring数据JPA的答案。

我已经看过这个:Handling soft-deletes with Spring JPA,但它更符合hibernet解决方案而不是spring数据JPA。

0 个答案:

没有答案