当前位置: 首页 > 知识库问答 >
问题:

JsonManagedReference与JsonBackReference

华凯捷
2023-03-14

我想知道Jackson中@JsonManagedReference@JsonBackReference之间的区别?

共有3个答案

方轩昂
2023-03-14

我更喜欢
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class,property=“id”,scope=Long.class)
其中property是主键字段的名称,scope是它的类型

章盛
2023-03-14
  • @JsonManaged参考-

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

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

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

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

潘宸
2023-03-14

@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; 
 }
 类似资料:
  • 问题内容: 我想知道的区别,并在杰克逊? 问题答案: @JsonManagedReference是引用的前一部分-可以正常序列化的部分。@JsonBackReference是参考的后半部分–序列化将忽略它。 所以他们真的取决于你的关系方向

  • 我知道和,都是用来解决的,这两个有什么区别? 注意:这些是杰克逊的注释。

  • 问题内容: 我试图根据我从关联存储库引用的实体,找到一种交换@JsonBackRefence和@JsonManagedReference的方法。 Site.java Building.java SiteRepository.java BuildingRepository.java 但是,当调用findById(buildingId)时,我想交换@JsonBackReference。因此,@ Jso

  • 在C语言中,假设每个算法被赋予完全相同的一组进程,那么先到先得、最短作业优先和循环之间的周转时间是否相等?还是调度算法不同?

  • 问题内容: 为了为 HTML5 Doctype 定义字符集,我应该使用哪种表示法? 短: 长: 问题答案: 在HTML5中,它们是等效的。使用较短的一个,更容易记住和键入。浏览器支持很好,因为它是为向后兼容而设计的。

  • 连接的多个输入都相当于Yes的时候才会输出Yes。 用法 Your browser does not support the video tag. 案例:小闹钟 功能:今天15:10:00,响起猫叫声小闹钟 工作原理 当所有的输入都是Yes的时候,与节点才输出Yes。