Spring 双向多个无限递归
我使用的是spring boot和spring data rest,有两个实体,即考试和科目,其定义如下: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
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中删除对主题的引用 你必须为你的科目定义一个投影包,为你的考试定义另一个投影包 考试投影将有一个主题投影,不参考考试,在另一个方向上也是如此