Spring Data Rest 中的 @OneToMany stackoverflow

发布于 2025-01-11 21:17:46 字数 371 浏览 1 评论 0原文

我有一个问题实体,其中包含如下选项列表:

@OneToMany(mappedBy = "question")
List<Option> options;

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

@ManyToOne
@JoinColumn(name="question_id")
Question question;

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

我做错了什么?

I have a Questions entity which has list of options as follows:

@OneToMany(mappedBy = "question")
List<Option> options;

And in Options entity I have specified the relation as :

@ManyToOne
@JoinColumn(name="question_id")
Question question;

When I hit /api/questions , it works fine but when I hit /api/questions/1 , it gives java.lang.StackOverflowError: null

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悲歌长辞 2025-01-18 21:17:46

这是因为选项指的是问题,问题指的是选项。你应该添加
@JsonIgnore 到您的班级之一,以防止彼此无限链接。 toString() 方法也可以实现同样的效果。如果您使用 Lombok 或生成默认的 toString 方法,也可能导致 statckoverflow。因为班级与班级相连。为了防止这种情况,请尝试在 toString 方法之一中排除类上的链接。
在 Lombok 中的 @ToString 注释中添加排除语句并排除选项或问题。也许您调用案例循环的 toString 方法。 @ToString(排除 = {"选项"})

It's because Option refers to Question and Question to Option. You should add
@JsonIgnore to one of your class to prevent infinite linking to each other. The same thing can be with toString() method. If you use Lombok or generate default toString method, it could cause statckoverflow also. Because classs linked to class. To prevent this try to exclude link on class in one of toString method.
In Lombok in @ToString annotation add exclude statement and exclude either Option or Question. Maybe you call toString method that cases loop. @ToString(exclude = {"option"})

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文