解决JPA级联查询出现的死循环问题

1 篇文章 0 订阅

一、问题

当实体使用一对一/一对多/多对多双向关联时,出现如下两种情况时,会出现死循环:

1.实体类的toString()方法中包含对级联对象的输出,代码中调用了实体类的toString()方法。

2.接口查询时,对实体对象进行序列化。

二、原因

以一对多举例,用户类(User)为一,爱好类(Hobby)为多,User和Hobby为双向关联,当使用JPA查询User,会自动查询Hobby,同理当查询Hobby时,会自动查询User。当出现上述问题中的两种情况时,会导致toString()或序列化的实体对象一直相互调用,进入死循环。

三、解决方法

1.情况一

重写toString()方法,将级联对象数据清空。

2.情况二

对实体类中的级联对象加入@JsonIgnoreProperties注解,序列化时就会忽略对级联对象的序列化,从而中断死循环。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值