gpt4 book ai didi

java - 在下面的 Java 代码中获取 StackOverflowError

转载 作者:行者123 更新时间:2023-11-30 07:41:00 24 4
gpt4 key购买 nike

我正在尝试在表上实现软删除,下面是我为实现相同目的所做的代码

@Entity
@Data
@Table(name = "users")
public class User implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private String surname;

@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Product> products = new ArrayList<>();

}

我在调试时遇到以下异常

Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate com.test.User.toString()

请告知它与我在实体中使用的 Lombok 的影响有关。

最佳答案

Lombok @Data 为您生成 toString,您可能在 Product 类中使用双向关联。可能 Product 也覆盖了 toString 方法。我猜是因为这种双向关联,你只是得到无限循环的 toString 调用。

lealceldeiro 建议的一个解决方案是将 User 类中的产品字段排除在toString 方法生成之外。您可以通过使用 @ToString.Exclude lombok 注释来注释您的字段来实现此目的:

@ToString.Exclude
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Product> products = new ArrayList<>();

或者您可以在 Product 实体中排除 user 字段。

您可以阅读有关 lombok 的信息 @ToString在他们的官方网站上。

关于java - 在下面的 Java 代码中获取 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56721540/

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