我在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。