【发布时间】:2020-04-08 06:49:03
【问题描述】:
我有一个无法解决的问题,我也用 JsonIgnore 尝试过,但也没有用。 我有一个待办事项列表,我希望我的任务输出我给他们的用户 ID。问题是因为每个用户都有一个任务数组,这些任务给了我一个无限循环的任务和用户。
这是我的代码:
用户:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private Set<Task> tasks;
任务:
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false)
private User user;
然后我有普通的 getter 和 setter 以及一个 toString 方法。
【问题讨论】:
-
注意:您的问题与 JPA 无关,您在序列化对象图时陷入了常见的“图不是树”陷阱。
-
您正在寻找
@JsonIdentityInfo。并且对于直接序列化数据库实体要非常谨慎;强烈考虑单独的 DTO 表示。 MapStruct 使翻译它们变得容易。
标签: java hibernate spring-boot jpa