【发布时间】:2018-08-02 13:29:43
【问题描述】:
OneToMany 关系 使用 Spring Data JPA 和 hibernate 作为提供者导致 无限 循环
这里的问题不是异常的类型而是导致这个异常的无限循环
我尝试了@JsonIgnoreProperties,这给了我另一个错误 => '无法编写 JSON:没有为类 org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer 找到序列化程序,也没有发现用于创建 BeanSerializer 的属性'
引用该解决方案的帖子没有解决我的问题的解决方案。
One 说使用@JsonManagedReference 和@JsonBackReference 确实会停止递归,但会在我想要'myUser' 对象时从我需要的结果中排除对象('myUser' 实体中的用户组)实体。
另一个说的是我不这样做的覆盖 ToString 方法。
另一个解释了为什么存在无限循环,并建议不这样做的解决方案。我引用“尝试从返回的模型中创建没有循环的 DTO 或值对象(简单 POJO),然后返回它。”
这个Difference between @JsonIgnore and @JsonBackReference, @JsonManagedReference解释了区别,但这样做我会遇到与第一个相同的问题
“我的用户”实体
@Entity
public class MyUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
private String email;
private Integer age;
//@JsonIgnoreProperties({"myUsers"})
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userGroupId")
private UserGroup userGroup;
“用户组”实体
@Entity
public class UserGroup {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Integer groupOrder;
@OneToMany
(
mappedBy = "userGroup",
cascade = CascadeType.ALL,
orphanRemoval = true
)
private List<MyUser> myUsers;
【问题讨论】:
-
您还需要帮助吗?
标签: json hibernate spring-data-jpa infinite-loop