首页 > 解决方案 > 通过@OneToMany 和@ManyToOne 使用JPA hibernate 获得无限递归

问题描述

我有一个无法解决的问题,我也用 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 方法。

标签: javahibernatespring-bootjpa

解决方案


使用 @JsonManagedReference 和 @JsonBackReference

用户:

@Entity
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

private String name;

@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
@JsonManagedReference
private Set<Task> tasks;

任务 :

@Entity
public class Task {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

private String name;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
@JsonBackReference
private User user;

推荐阅读