JsonManagedReference 与 JsonBackReference

新手上路,请多包涵

我想知道杰克逊的 @JsonManagedReference@JsonBackReference 之间的区别?

原文由 ooozguuur 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 964
2 个回答

@JsonManagedReference 是引用的前向部分——正常序列化的部分。 @JsonBackReference 是引用的后面部分——它会从序列化中被忽略。

所以他们真的取决于你们关系的方向

public class User {
    public int id;
    public String name;

    @JsonBackReference
    public List<Item> userItems;
}

public class Item {
    public int id;
    public String itemName;

    @JsonManagedReference
    public User owner;
 }

原文由 David 发布,翻译遵循 CC BY-SA 3.0 许可协议

  • @JsonManagedReference -> 管理引用的前向部分,此注释标记的字段是被序列化的字段
  • @JsonBackReference -> 管理引用的反向部分,标有此注释的字段/集合未序列化。

用例: 您的实体/表中有一对多或多对多关系,不使用上述关系会导致错误,例如

Infinite Recursion and hence stackoverflow - > Could not write content: Infinite recursion (StackOverflowError)

发生上述错误是因为杰克逊(或其他类似的人)试图序列化关系的两端并以递归结束。

@JsonIgnore 执行类似的功能,但上面提到的注释更可取。

原文由 HopeKing 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题