我正在尝试在表上实现软删除,下面是我为实现相同目的所做的代码
@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<>();
}
Run Code Online (Sandbox Code Playgroud)
我在调试时遇到以下异常
Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate com.test.User.toString()
Run Code Online (Sandbox Code Playgroud)
请告知这与我在实体中使用的 Lombok 的影响有关。
Lombok会为您@Data生成toString,并且您可能在Product类中使用双向关联。并且可能Product还toString覆盖了方法。我猜你只是toString因为这种双向关联而得到无限循环的调用。
lealceldeiro 建议的一种解决方案是将类中的 products 字段排除User在方法生成的考虑范围之外toString。您可以通过使用@ToString.Excludelombok 注释来注释您的字段来实现此目的:
@ToString.Exclude
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Product> products = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
或者您可以排除实体user中的该字段Product。
您可以在其官方网站上了解有关 lombok 的信息@ToString。
| 归档时间: |
|
| 查看次数: |
3078 次 |
| 最近记录: |