JPA项目,查询失败,Could not write JSON: failed to lazily initialize a collection of role

.w.s.m.s.DefaultHandlerExceptionResolver:Resolved exception caused by handler excution:

org.springframework.http.converter.HttpMessageNotWritableException:Could not write JSON: failed to lazily initialize a collection of role

网上有说是懒加载的问题,但是我没能从这个思路解决问题(因为还会无限循环,可能是我没处理好.但是如果想要查询到引用属性的第几级,可能就需要好好研究一下懒加载了).

问题发生的原因是:

返回的数据是实体类,这个实体类里面有很多关联关系,会无限查询(不知道这种说法是否完全正确,望指教)

解决方法:

(1)在实体类中一对多的引用属性上加上注解@JsonIgnore,表示查询的时候不查询这个属性

比如Teacher类(班主任)中关联了学生集合,是一对多的关系

import com.fasterxml.jackson.annotation.JsonIgnore;

(2)在实体类中多对一的引用属性上加上注解@JsonIgnoreProperties,表示查询的时候不查询这个引用属性中的哪些属性(需要手动定义不需要查询哪些属性)

反过来在Student类中也关联了一个班主任Teacher,是多对一的关系

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

(value中是Teacher对象中的属性名,表示查询的时候不查询teacher类中的哪些属性,这里写的都是引用属性名.

比如students,表示不查询teacher中的引用属性students,但是查询teacher的id等其他普通属性)

(如果teacher中引用属性只有一个,那么写value=" "格式就可以,如果是多个引用属性,可以使用value={" "," "})

 

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值