Spring 双向多个无限递归

Spring 双向多个无限递归,spring,jackson,spring-data-rest,Spring,Jackson,Spring Data Rest,我使用的是spring boot和spring data rest,有两个实体,即考试和科目,其定义如下: public class Exam { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="exam_id") Integer examId; @Column(name="exam_name") String examName; @ManyT

我使用的是spring boot和spring data rest,有两个实体,即考试和科目,其定义如下:

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);


}
公开课考试{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“考试id”)
整数examId;
@列(name=“考试名称”)
字符串examName;
@许多(mappedBy=“考试”)
设置主题=新哈希集(0);
}
公共课科目{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“subject\u id”)
整数主语;
@列(name=“subject\u name”)
字符串subjectName;
@许多
@可接合(
name=“科目考试”,
joinColumns={@JoinColumn(name=“subject_id”,updateable=false,nullable=false)},
inverseJoinColumns={@JoinColumn(name=“exam\u id”,updateable=false,nullable=false)}
)
设置检查=新哈希集(0);
}
现在,我对主体的投影定义如下:

@Projection(name="detail", types={Subject.class})
public interface SubjectDetailProjection {

    Integer getSubjectId();
    String getSubjectName();
    Set<ExamDetailProjection> getExams();
}
@Projection(name=“detail”,types={Subject.class})
公共接口主体细节投影{
整数getSubjectId();
字符串getSubjectName();
设置gettests();
}
考试的细节投影也以同样的方式定义。
现在,当为这个投影调用api时,我得到了无限递归。如何避免此问题?

您必须在ExamDetailProjection中删除对主题的引用

你必须为你的科目定义一个投影包,为你的考试定义另一个投影包

考试投影将有一个主题投影,不参考考试,在另一个方向上也是如此