gpt4 book ai didi

json - Jpa实体关系导致死循环

转载 作者:行者123 更新时间:2023-12-05 01:17:29 25 4
gpt4 key购买 nike

我正在使用 spring 数据 jpa 来构建我的项目。有一个 User 实体和一个 Biz 实体。

@ManyToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private UserInformation belongUser;//所属用户

上面的这段代码是 Biz 类的一部分。
@OneToMany(cascade = CascadeType.ALL,mappedBy = "belongUser")
private Set<BizInformation> bizs = new HashSet<BizInformation>();

这是用户类的一部分

问题是当我通过 RESTful api 获取 UserInfomation 时,它返回一个 BizInfo,然后在 BizInfo 内部它返回 UserInfomation,最后导致 StackOverFlow 异常。

我该如何解决这个问题?谢谢。

最佳答案

这个问题是由双向关系引起的。您可以使用
@JsonManagedReference @JsonBackReference

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

  • 在您的情况下,您可以在 User 类中添加 @JsonManagedReference
    @OneToMany(cascade = CascadeType.ALL,mappedBy = "belongUser")
    @JsonManagedReference
    private Set<BizInformation> bizs = new HashSet<BizInformation>();

    和 Biz 类的 @JsonBackReference 将省略 UserInformation 序列化
    @ManyToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL)
    @JoinColumn(name = "user_id")
    @JsonBackReference
    private UserInformation belongUser;//所属用户

    您还可以将 @JsonIgnore 用于要省略序列化的类

    更多详情: jackson-bidirectional-relationships-and-infinite-recursion

    关于json - Jpa实体关系导致死循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46700641/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com