【发布时间】:2012-11-17 18:44:57
【问题描述】:
我的实体中存在双向多对多关系。请看下面的例子:
public class Collaboration {
@JsonManagedReference("COLLABORATION_TAG")
private Set<Tag> tags;
}
public class Tag {
@JsonBackReference("COLLABORATION_TAG")
private Set<Collaboration> collaborations;
}
当我尝试将其序列化为 JSON 时,出现以下异常:`
"java.lang.IllegalArgumentException: 无法处理托管/返回 参考'COLLABORATION_TAG':反向参考类型(java.util.Set)不是 兼容托管类型(foo.Collaboration)。
实际上,我知道这是有道理的,因为 javadoc 明确指出您不能在集合上使用 @JsonBackReference。我的问题是,我应该如何解决这个问题?我现在所做的是删除父端的@JsonManagedReference 注释,并在子端添加@JsonIgnore。有人能告诉我这种方法的副作用是什么吗?还有其他建议吗?
【问题讨论】:
-
您可以使用 Jackson 2.0。见stackoverflow.com/questions/10065002/…
-
JsonIdentityInfo注释很可爱,谢谢@EugeneRetunsky!我发现此页面对了解其工作原理非常有用:wiki.fasterxml.com/JacksonFeatureObjectIdentity -
我试过
JsonManagedReference和JsonBackReference他们都没有工作。但是,@SimonAndréForsberg 给出的链接非常有趣且有效。
标签: java json many-to-many jackson