gpt4 book ai didi

java - JPA 实体在转换为 JSON 时给出 stackoverflow 错误,但在使用 POJO 时则不会

转载 作者:行者123 更新时间:2023-12-02 10:47:52 26 4
gpt4 key购买 nike

我正在使用 JSON 和 JPA,并且有 main 方法,可以对我的对象进行一些测试。

每当我尝试将 Java 实体转换为 JSON 字符串时,都会出现堆栈溢出错误

String jsonString = gson.toJson(cus1)

如果我在本例中使用常规 POJO 作为 DTO,则不会收到错误。但是当我使用实体类时,为什么会出现堆栈溢出错误?

@Entity
@Table(name = "Customers")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c")
, @NamedQuery(name = "Customer.findById", query = "SELECT c FROM Customer c WHERE c.id = :id")
, @NamedQuery(name = "Customer.findByName", query = "SELECT c FROM Customer c WHERE c.name = :name")
, @NamedQuery(name = "Customer.findByAge", query = "SELECT c FROM Customer c WHERE c.age = :age")})

public class Customer implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private int age;
@JoinColumn(name = "city", referencedColumnName = "id")
@ManyToOne(optional = false)
private City city;
//getters, setters and constructor

最佳答案

该错误与 City 序列化 Customer 以及 Customer 再次序列化城市有关,从而导致 StackOverflowError

如果您没有在 Customer 实体中使用城市对象,只需在 json 序列化期间忽略该字段即可。

@XmlRootElement
public class Customer {

@XmlTransient
private Set<City> cities;

}

反之亦然,在private City city;字段中使用@XmlTransient

关于java - JPA 实体在转换为 JSON 时给出 stackoverflow 错误,但在使用 POJO 时则不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52413210/

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