我有一个包含页面的应用程序,每个页面可能都有子页面:
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
的关系之一中.在其他情况下,我需要使用自定义序列化程序,其中我不会加载子级。