记录一个遇到的很细节的问题。情况是这样的:SSM框架集成jackson,使用分页插件pageInfo封装分页查询信息返回前端json数据,但是使用postman测试时报500错误。
谷歌搜索了很多,并没有实质的解决,终于过了三天,直到我导入jsqlparser依赖才有了进展(jsqlparser是一个sql 解析工具)
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>1.2</version>
</dependency>
功能上只需要返回分页信息,所以一开始没有导入jsqlparser依赖。在尝试导入此依赖之后,报错改变了,谷歌一下终于找到了原因——Mybatis懒加载导致返回前端数据json序列化错误
导入jsqlparser依赖后报错信息如下:
这个报错问题就是mybatis懒加载导致的问题。
解决办法有两种:
- 关闭/不启用mybatis懒加载(mybatis默认关闭)
- 在所有相关的类前加上@JsonIgnoreProperties, 作用是json序列化时忽略bean中的一些属性序列化和反序列化时抛出的异常
@JsonIgnoreProperties(value = {"handler"})
最后完美填坑