问题描述
当我尝试提出请求时,我有一个包含很多 @ManyToOne 的模型,我有一个递归的 Json。
所以,我像这样放了一些 FetchType.EAGER 并且它有效:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "comp_doc",referencedColumnName = "comp_doc")
public CompDoc getCompDoc() {
return CompDoc;
}
但是对于几个请求,我不需要所有的@ManyToOne。所以我尝试将 FetchType 更改为 LAZY,如下所示:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "comp_doc",referencedColumnName = "comp_doc")
public CompDoc getCompDoc() {
return CompDoc;
}
此时,如果我不需要@ManyToOne 中的数据,通常会将它们从 Json 中排除。
直接自引用导致循环(通过引用链: java.util.ArrayList[6021]->org.test.test.model.Document["documentByDocId"]
为什么这个错误出现在 LAZY 而不是 EAGER?
解决方法
显然,您正在尝试使用具有循环的 Jackson 将某些内容序列化为 JSON。但这不受支持。我认为获取模式在这里应该没有区别,但这绝对是数据问题或配置问题。也许您应该尝试通过使用 @JsonIgnore