原因
hashCode和equals方法中会对多对多属性进行处理。而且多对多关系中都互相包含,并且都有实现hashCode和equals方法,这就出现了循环的情况,于是就导致栈溢出。
解决方法
使用 @JsonIgnore注解
或者使用@JsonManagedReference
和@JsonBackReference
注解(使用这组注解可以序列化另一个关系的类)。具体详见代码
@ManyToOne
@MapsId("examId")
@JoinColumn(name = "exam_id")
@JsonBackReference
private Exam exam;
}
@JsonManagedReference
@OneToMany(mappedBy = "exam", targetEntity = ExamRating.class, fetch = FetchType.EAGER)
private Set<ExamRating> examRatings;
当然我们也可使用
@ToString(exclude = {
"xxx"})
@EqualsAndHashCode(exclude= {
"xxx"})