zpw*_*pal 4 spring json jackson
我正在使用 spring data jpa 来构建我的项目。有一个用户实体和一个业务实体。
\n\n@ManyToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL)\n@JoinColumn(name = "user_id")\nprivate UserInformation belongUser;//\xe6\x89\x80\xe5\xb1\x9e\xe7\x94\xa8\xe6\x88\xb7\nRun Code Online (Sandbox Code Playgroud)\n\n上面的代码是 Biz 类的一部分。
\n\n@OneToMany(cascade = CascadeType.ALL,mappedBy = "belongUser")\nprivate Set<BizInformation> bizs = new HashSet<BizInformation>();\nRun Code Online (Sandbox Code Playgroud)\n\n这是 User 类的一部分
\n\n问题是当我通过 RESTful api 获取 UserInfomation 时,它返回一个 BizInfo,然后在 BizInfo 内部返回 UserInfomation,最后导致 StackOverFlow 异常。
\n\n我该如何解决这个问题?谢谢。
\n这个问题是由双向关系引起的。您可以使用 \n @JsonManagedReference和@JsonBackReference
\n\n在您的情况下,您可以在 User 类中添加 @JsonManagedReference
\n\n@OneToMany(cascade = CascadeType.ALL,mappedBy = "belongUser")\n@JsonManagedReference\nprivate Set<BizInformation> bizs = new HashSet<BizInformation>();\nRun Code Online (Sandbox Code Playgroud)\n\n和 Biz 类的 @JsonBackReference 将省略 UserInformation 序列化
\n\n@ManyToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL)\n@JoinColumn(name = "user_id")\n@JsonBackReference\nprivate UserInformation belongUser;//\xe6\x89\x80\xe5\xb1\x9e\xe7\x94\xa8\xe6\x88\xb7\nRun Code Online (Sandbox Code Playgroud)\n\n您还可以对要省略序列化的类使用@JsonIgnore
\n\n更多细节:杰克逊双向关系和无限递归
\n| 归档时间: |
|
| 查看次数: |
4049 次 |
| 最近记录: |