gpt4 book ai didi

java - JPA 实体、循环引用和 toString()

转载 作者:行者123 更新时间:2023-12-02 06:47:38 25 4
gpt4 key购买 nike

通常会有实体图,其中关系以两种方式映射,例如。

class Home {
@Id
private Long id;

@OneToMany(mappedBy = "home")
Set<Room> rooms;

@Override
public String toString() {
return "Home [id=" + id + ", rooms=" + rooms + "]";
}
}

class Room {
@Id
private Long id;

@ManyToOne
private Home home;

@Override
public String toString() {
return "Room [id=" + id + ", home=" + home + "]";
}
}

也就是说,如果我们使用 IDE 的自动功能生成 toString 方法,我们可能会无意中导致 toString() 方法中的深度递归,因为 Home 将打印 Rooms,而每个 Room 将依次打印其 Home。

是否有任何优雅的方法(专门用于调试目的)以清晰的、类似于 toString 的方式打印对象图,而不必在实现 toString() 方法时注意避免循环?

最佳答案

如何使用 Apache Commons Lang 执行以下操作

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}

这将为您提供对象的反射表示。通过这种方式,您可以实现一个格式化程序,它可以遍历对象图并漂亮地打印输出,但不必担心管理属性的单独添加/删除。

关于java - JPA 实体、循环引用和 toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18452228/

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