У меня две сущности и когда я хочу получить grade.getSubcompetence(). Ошибка возникает, когда я сохраняю объект, потому что данные субкомпетенции равны нулю. Когда я отлаживаю, я вижу ошибку:
'java.lang.StackOverflowError' exception. Cannot evaluate _$$_jvstea5_f.toString()
@Entity
@Data
@NoArgsConstructor
@ToString(exclude = {"subcompetence"})
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = "GRADE")
public class Grade {
@JsonBackReference
@ManyToOne(
fetch = FetchType.LAZY,
optional = false)
@JoinColumn(name = "SUBCOMPETENCE_ID", nullable = false)
private Subcompetence subcompetence;
@JsonBackReference
@ManyToOne(
fetch = FetchType.LAZY,
optional = false)
@JoinColumn(name = "LEVEL_ID", nullable = false)
private Level level;
}
@Entity
@Data
@NoArgsConstructor
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = "SUBCOMPETENCE")
public class Subcompetence {
@JsonManagedReference
@OneToMany(
mappedBy = "subcompetence",
fetch = FetchType.LAZY,
cascade = CascadeType.ALL)
private List<Grade> grades;
}
@robot_alien обновлен
Трудно связать с изображением, опубликуйте фрагмент цикла здесь, кажется, проблема там сама
Кроме того, я думаю, что код превращается в циклическую структуру ...
Во все столбцы соединения добавьте аннотацию @JsonIgnore.




попробуйте добавить @EqualsAndHashCode(exclude = "grades") в свой класс Subcompetence
это тоже не помогает (
Добавьте @EqualsAndHashCode(callSuper=false) и JsonIgnore, как показано ниже.
@OneToMany(
mappedBy = "subcompetence",
fetch = FetchType.LAZY,
cascade = CascadeType.ALL)
@JsonIgnore
private List<Grade> grades;
Удалите @ToString(exclude = {"subcompetence"}) и убедитесь, что я столкнулся с этой проблемой.
вы удалили @JsonManagedReference и `@ JsonBackReference` из других классов?
да, я удаляю эти аннотации над полями оценок и подкомпетентностей
Привет, можете ли вы также опубликовать фрагмент кода, который вызывает эту ошибку?