使用Spring Data JPA和Hibernate作为提供程序的OneToMany关系会导致无限循环
问题不在于异常类型,而在于导致此异常的无限循环
我尝试了@JsonIgnoreProperties,但出现了另一个错误 => 'Could not write JSON: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer'
引用解决方案的帖子没有解决我的问题。
一种方法是使用@JsonManagedReference和@JsonBackReference,这确实停止了递归,但将对象(“myUser”实体中的UserGroup)从结果中排除,而我需要该对象。
另一种方法是覆盖ToString方法,但我没有这样做。
另外一个人解释了为什么会发生无限循环,并建议不要那样做。我引用:“尝试从返回的模型创建DTO或值对象(简单POJO)而不带循环,然后返回它。”
这篇文章 @JsonIgnore和@JsonBackReference,@JsonManagedReference之间的区别解释了区别,但这样做会出现与第一个方法相同的问题。
'myUser'实体
@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;