我有一个spring应用程序,使用jpa和sql db。在我的应用程序中,数据模型非常复杂,但我将使用此示例,因为它显示了我需要的所有内容:父1:n子1:n孙辈。
我的目标是:每当一个孩子或孙子得到更新时,给我一个所有相关父母的列表。为了实现这一点,出于性能原因,我希望从数据库加载父级,而不是使用getter导航。
我已经做了:我有一个 EntityListener
用一个 preUpdate
方法。在此方法中,我使用以下命令调用存储库: parentRepository.findParentsByChild_Id()
/ findParentsByGrandchild_Id()
(二者都有各自的疑问)
发生了什么:假设我更新了一个孩子,所以 preUpdate
与子实体一起调用。现在我执行 findParentsByChild_Id()
通过这样做, preUpdate
再次调用具有相同子实体的。所以我最终陷入了一个无休止的循环。更新孙子的情况也一样。
起初,我认为必须先保存实体,所以我尝试了后期更新,得到了相同的结果。
现在我不明白为什么在另一个实体的存储库中的findby操作中使用更新后的实体id时会调用pre/post update。
暂无答案!
目前还没有任何答案,快来回答吧!