java - 通过@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 方法。
解决方案
使用 @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;
推荐阅读
- ruby-on-rails - 无法使用特定版本的捆绑程序
- javascript - 为什么要使用“var”而不是“let”?
- python - 在 Python 中从 yaml 文件动态生成数组元素
- javascript - javascript formatDate时区显示不正确
- php - 在 PHP 中自定义排序数组
- regex - 0.000001 的正则表达式值匹配
- angular - 如何在 Angular 组件中实现外部脚本文件?
- assembly - 在 x86-64 中编码 JMP FAR 和 CALL FAR
- python - 使用起始网址在分页链接中使用scrapy刮擦不起作用
- vba - 代码不起作用:使用 vba 将文件从一个目录复制到另一个目录