Я использую пружинную загрузку и данные по пружине, и у меня есть две сущности, Экзамен и Тема, которые определены следующим образом:
public class Exam {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="exam_id")
Integer examId;
@Column(name="exam_name")
String examName;
@ManyToMany(mappedBy = "exams")
Set<Subject> subjects = new HashSet<>(0);
}
public class Subject {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "subject_id")
Integer subjectId;
@Column(name = "subject_name")
String subjectName;
@ManyToMany
@JoinTable(
name = "subject_exam",
joinColumns = {@JoinColumn(name = "subject_id", updatable = false, nullable = false)},
inverseJoinColumns = {@JoinColumn(name = "exam_id", updatable = false, nullable = false)}
)
Set<Exam> exams = new HashSet<>(0);
}
Теперь я определил проекцию для предмета следующим образом:
@Projection(name="detail", types={Subject.class})
public interface SubjectDetailProjection {
Integer getSubjectId();
String getSubjectName();
Set<ExamDetailProjection> getExams();
}
Детальная проекция на экзамен также была определена таким же образом.
Теперь я получаю бесконечную рекурсию при вызове API для этой проекции. Как я могу избежать этой проблемы?