大家好,我是小米,一个31岁的Java后端开发者。
我发现程序员这行啊,最容易让人“精神内耗”的不是加班、不是需求改动,而是——被注解支配的恐惧。
有一天,我在项目里写了一个看似普通的实体类映射,然后一运行,控制台瞬间爆红:
com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)。
我心想:“完了,这回真是递归到天荒地老了。”
没错,今天这篇文章,就想和你聊聊我那次因为 @OneToMany 映射引发的“血案”,以及我后来是怎么优雅化解循环依赖这场灾难的。
事情的起因:那条看似无害的关联
那天,我在写一个订单模块。需求非常简单——订单(Order)和明细(Detail)是一对多的关系。于是我写了这样一段代码:

看起来没毛病对吧?但过了两分钟,我在前端调试接口的时候,发现返回结果是这样的:
无限递归!
就像照镜子一样,order 里有 details,details 里又有 order,一层层往里套,最后栈直接爆掉。
那一夜,我查了整整三十页 StackOverflow
凌晨两点,我还在和 Google 斗智斗勇。
各种答案都有,有人说用 @JsonIgnore,有人说用 @JsonBackRef

最低0.47元/天 解锁文章
676

被折叠的 条评论
为什么被折叠?



