Двунаправленная бесконечная рекурсия ManyToMany - PullRequest
0 голосов
/ 28 апреля 2018

Я использую пружинную загрузку и данные по пружине, и у меня есть две сущности, Экзамен и Тема, которые определены следующим образом:

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 для этой проекции. Как я могу избежать этой проблемы?

1 Ответ

0 голосов
/ 30 апреля 2018

Вы должны удалить в вашей ExamDetailProjection ссылку на тему.

Вы должны определить один пакет проекций для вашего предмета и другой пакет проекций для ваших экзаменов.

Экзаменационная проекция будет иметь предметную проекцию без ссылки на экзамен и такую ​​же в другом направлении.

...