我有一个名为AssessmentCenter
的类,它与我的客户类Interviewer
、客户类Candidate
和客户类Recruiter
有多对多的关系。它还与客户类Interview
有一对多的关系。它们都有双向关系(所以每个类都保存了彼此的引用对象)。为了给予你对它的外观有个概念,请查看下面AssessmentCener
类中的代码段:
现在,问题是,当我试图删除一个AssessmentCenter
时,我需要手动删除每个对象所持有的那些引用,否则会导致错误。例如,如果我想从数据库中删除一个AssessmentCenter
的示例,那么我需要做以下操作:
1.删除List<Interviewer>
-〉中的所有对象,然后对于每个删除的Interviewer
对象,我需要删除Interviewer
对象所持有的AssessmentCenter
对象。
1.对其他3个对象重复相同的操作(对于具有一对多关系的Candidate
,除了在访问结束时,其思想是相同的,它只需要删除AssessmentCenter
对象一次)。
下面的代码显示了该过程:
正如您所看到的,这个过程非常乏味而且容易出错,因为每当我想要删除一个AssessmentCenter
时,我都需要确保删除所有的关系。
因此,我的问题是,有没有更好的方法来做到这一点?
1条答案
按热度按时间ni65a41a1#
尝试在
ManyToMany
和OneToMany
关系中使用CascadeType.REMOVE
,每当删除其父实体时,它都会删除子实体。例如:
对于
OneToMany
关系,您也可以尝试设置orphanRemoval = true
:然后,在
deleteAcById
方法中,您只需要调用accessmentCenterRepository.deleteById
,它将为您处理子实体。希望有帮助。