.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={" "," "})

 

 

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 7 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐