如何在休眠中打破无限的父子循环



我有一个包含页面的应用程序,每个页面可能都有子页面:

Page.java

public class Page{
  ...
  @Nullable
  @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  private Page parentPage;
  @OneToMany(fetch = FetchType.EAGER, mappedBy = "parentPage")
  private List<Page> childPages;
  ...
}

我想在每个页面上显示一个链接<< Back to parent page,并具有指向其所有子级的链接:

view-page.html

<div ng-if="currentPage.parentPage">
  <a href="#/view-page?pageId={{currentPage.parentPage.id}}">Back to {{currentPage.parentPage.title}}</a>
</div>
...
<div ng-repeat="row in currentPage.childPages">
  <a href="#!/view-page?pageId={{row.id}}">{{row.title}}</a>
</div>

这会导致无限循环父 - 子 - 父 - ...

我尝试使用@JsonIgnore,但后来我丢失了我需要的信息(无论是父母还是孩子(。我还尝试用@JsonManagedReference注释父页面,用@JsonBackReference注释子页面列表。然后我可以看到父母,但看不到孩子。我的下一步将是尝试编写自定义序列化程序。

所以我的问题是 - 有没有人知道我如何获得parentPage属性并且仍然能够看到孩子而不会进入无限循环的孩子 - 父母 - 孩子 - 父母......?

我找到了解决方案。在我可以使用@JsonIgnore的关系之一中.在其他情况下,我需要使用自定义序列化程序,其中我不会加载子级。

相关内容

  • 没有找到相关文章

最新更新