通过 @OneToMany 和 @ManyToOne 使用 JPA hibernate 获得无限递归

Dom*_*rio 2 java hibernate jpa spring-boot

我有一个无法解决的问题,我也尝试使用 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;
Run Code Online (Sandbox Code Playgroud)

任务:

@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;
Run Code Online (Sandbox Code Playgroud)

然后我有正常的 getter 和 setter 以及 toString 方法。

Dum*_*nga 5

使用@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;
Run Code Online (Sandbox Code Playgroud)

任务 :

@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;
Run Code Online (Sandbox Code Playgroud)