Spring Data Rest中的@OneToMany stackoverflow

Ars*_*jum 3 spring spring-data-rest

我有一个 Questions 实体,其中包含以下选项列表:

@OneToMany(mappedBy = "question")
List<Option> options;
Run Code Online (Sandbox Code Playgroud)

在选项实体中,我将关系指定为:

@ManyToOne
@JoinColumn(name="question_id")
Question question;
Run Code Online (Sandbox Code Playgroud)

当我点击时/api/questions,它工作正常,但当我点击时/api/questions/1,它给出 java.lang.StackOverflowError: null

我究竟做错了什么?

Den*_*n B 5

这是因为 Option 指的是 Question,而 Question 指的是 Option。您应该将 @JsonIgnore 添加到您的一个类中,以防止彼此无限链接。toString() 方法也是如此。如果您使用 Lombok 或生成默认的 toString 方法,它也可能导致 statckoverflow。因为班级挂钩。为了防止这种情况,尝试在 toString 方法之一中排除类上的链接。在 Lombok 的 @ToString 注释中添加 exclude 语句并排除 Option 或 Question。也许您调用了案例循环的 toString 方法。@ToString(exclude = {"option"})