Spring 数据中的@OneToMany stackoverflow
@OneToMany stackoverflow in Spring Data Rest
我有一个问题实体,其中包含如下选项列表:
@OneToMany(mappedBy = "question")
List<Option> options;
并且在 Options 实体中,我将关系指定为:
@ManyToOne
@JoinColumn(name="question_id")
Question question;
当我点击 /api/questions
时,它工作正常但是当我点击 /api/questions/1
时,它给出 java.lang.WhosebugError: null
我做错了什么?
因为Option指Question,Question指Option。你应该添加
@JsonIgnore 到您的 class 之一,以防止彼此无限 linking。 toString() 方法也可以做同样的事情。如果您使用 Lombok 或生成默认的 toString 方法,它也可能导致 statckoverflow。因为 classs linked 到 class。为防止这种情况,请尝试在其中一种 toString 方法中排除 class 上的 link。
在 Lombok 的 @ToString 注释中添加排除语句并排除 Option 或 Question。也许你调用 cases 循环的 toString 方法。 @ToString(排除={"option"})
我有一个问题实体,其中包含如下选项列表:
@OneToMany(mappedBy = "question")
List<Option> options;
并且在 Options 实体中,我将关系指定为:
@ManyToOne
@JoinColumn(name="question_id")
Question question;
当我点击 /api/questions
时,它工作正常但是当我点击 /api/questions/1
时,它给出 java.lang.WhosebugError: null
我做错了什么?
因为Option指Question,Question指Option。你应该添加 @JsonIgnore 到您的 class 之一,以防止彼此无限 linking。 toString() 方法也可以做同样的事情。如果您使用 Lombok 或生成默认的 toString 方法,它也可能导致 statckoverflow。因为 classs linked 到 class。为防止这种情况,请尝试在其中一种 toString 方法中排除 class 上的 link。 在 Lombok 的 @ToString 注释中添加排除语句并排除 Option 或 Question。也许你调用 cases 循环的 toString 方法。 @ToString(排除={"option"})