解决jpa和hibernate的json序列化死循环问题
在jpa和hibernate的一对多和多对多查询的时候,常常会出现死循环的情况。
出现这种情况主要是在json序列化的时候,出现循环引用的情况,与后台查询的语句无关。所以只要在json序列化的时候,进行处理就可以了。
本文使用json工具进行处理序列化问题:
package bos.utils;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;import java.util.List;public class JsonUtils {//strings序列化出现循环引用的字段public static String objecttojson(Object object,String[] strings) {JsonConfig jsonConfig=new JsonConfig();jsonConfig.setExcludes(strings);JSONObject fromObject = JSONObject.fromObject(object, jsonConfig);String json=fromObject.toString();return json;}public static String arraytojson(List list,String[] strings ){JsonConfig jsonConfig=new JsonConfig();jsonConfig.setExcludes(strings);JSONArray fromObject = JSONArray.fromObject(list,jsonConfig);String json=fromObject.toString();return json;}
}
处理之前的处理代码和结果
@RequestMapping("/list")@ResponseBodypublic PageBean list(int page, int rows){Pageable pageable= PageRequest.of(page-1,rows);Page<Function> rolePage = functionService.findAll(pageable);PageBean pageBean=new PageBean();pageBean.setCurrentPage(page);pageBean.setPageSize(rows);pageBean.setTotal((int) functionService.count());pageBean.setRows(rolePage.getContent());//防止出现死循环
// String objecttojson = JsonUtils.objecttojson(pageBean, new String[]{"roles","parentFunction","children"});
// return objecttojson;return pageBean;}
出现错误:
修改后代码:
@RequestMapping("/list")@ResponseBodypublic String list(int page, int rows){Pageable pageable= PageRequest.of(page-1,rows);Page<Function> rolePage = functionService.findAll(pageable);PageBean pageBean=new PageBean();pageBean.setCurrentPage(page);pageBean.setPageSize(rows);pageBean.setTotal((int) functionService.count());pageBean.setRows(rolePage.getContent());//防止出现死循环String objecttojson = JsonUtils.objecttojson(pageBean, new String[]{"roles","parentFunction","children"});return objecttojson;
// return pageBean;}
处理结果:
总结:对于多对对和一对多的双方关联,会出现循环引用的情况。解决方法基本如下
- 将双方关联改成一方关联也能解决死循环的问题,但是这种方法不太推荐
- 采用本文的方法,在序列化之前剔除循环引用的字段
- 使用@JsonIgnoreProperties注解进行解决,本人尝试过好像不太行,如果有小伙伴会的话,可以联系我。
解决jpa和hibernate的json序列化死循环问题相关推荐
- 解决Python自带的json序列化工具不能序列化datetime类型数据问题
解决Python自带的json序列化工具不能序列化datetime类型数据问题 参考文章: (1)解决Python自带的json序列化工具不能序列化datetime类型数据问题 (2)https:// ...
- jpa 多层嵌套一对多_JPA一对多、多对多json序列化死循环问题解决
Task import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import javax.persistence.*; impor ...
- jpa映射json_如何使用JPA和Hibernate映射JSON集合
jpa映射json 介绍 开源的hibernate-types项目允许您将Java对象或Jackson JsonNode为JPA实体属性. 最近,由于我们的杰出贡献者,我们添加了对类型安全集合的支持, ...
- 如何使用JPA和Hibernate映射JSON集合
介绍 开源的hibernate-types项目允许您将Java对象或Jackson JsonNode为JPA实体属性. 最近,感谢我们的杰出贡献者,我们添加了对类型安全集合的支持,该集合也可以作为JS ...
- .NET解决[Serializable] Attribute引发的Json序列化k_BackingField
在WebAPI中的WebApiConfig直接加入如下配置 有问题找谷歌
- SpringBoot之解决一对一、多对一、多对多等关联实体在JSON序列化/输出时产生的无限递归死循环问题(infinite recursion)
SpringBoot之解决一对一.多对一.多对多等关联实体在JSON序列化/输出时产生的无限递归死循环问题(infinite recursion) 参考文章: (1)SpringBoot之解决一对一. ...
- 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
1..Net开源Json序列化工具Newtonsoft.Json中提供了解决序列化的循环引用问题: 方式1:指定Json序列化配置为 ReferenceLoopHandling.Ignore 方式2: ...
- Redis学习篇3_事务及其监控(锁)、Jedis、SpringBoot整合Redis、RedisTemplate的json序列化、RedisUtil工具类
目录 事务及其监控(锁) Jedis SpringBoot整合Redis RedisTemplate 默认RedisTemplate来源 关于中文序列化问题 RedisUtil工具类 一.事务及其监控 ...
- 【Go】自定义json序列化
一.忽略字段 我们知道,通过tag,可以有条件地实现定制Go JSON序列化的方式,比如json:"abc,omitempty", 当字段的值为空的时候,我们可以在序列化后的数据中 ...
- JPA和Hibernate的关系
转载自:https://www.cnblogs.com/amoyzhu/p/5937717.html JPA Java Persistence API,是Java EE 5的标准ORM接口,也是ejb ...
最新文章
- np.reshape 中的 -1 参数
- 澎思科技新出行人再识别(ReID)算法,刷新三大数据集最高记录
- 友盟统计集成_友盟+智能超链U-Link,助力开发者拥有更极致的分享体验_互联网_科技快报...
- IndirectmodificationofoverloadedelementofXXXhasnoeffect的解决办法
- windows系统 ping Telnet等系统自带命令无法使用原因及解决方法
- Vue.js 使用 Swiper.js 在 iOS 11 时出现错误
- AliSQL 配置安装
- 数字滤波器设计之一:巴特沃斯(Butterworth)滤波器
- html做彩色方格,超级炫酷,美图秀秀制作超漂亮彩色格子字图文教程
- nginx通过url跳转到另外的一个url上
- Rect、RectF方法解析
- 如何将视频上传到网站服务器,如何将本地视频上传到云服务器
- Ae 入门系列之二:素材的导入与管理
- AT32 MCU Audio 24bit例程
- 蓝桥杯专题之并查集篇
- 80岁的我选择重出江湖
- 机架惠普服务器型号,惠普HP DL160G6机架式服务器
- 怎么样才能cad快速看图操作
- 分享一波学习资料福利,赶紧收藏!!!
- 记Google应用内商品(消耗品)支付小坑
热门文章
- pandas 数据分析 相关性_Pandas库学习笔记2-Pandas数据特征分析
- matlab中单位格式,[转载]matlab中的数据显示格式-format
- 周长相等的正方形面积一定相等_周长和面积一直是三年级孩子的易失分点,家长要把好关!...
- 线性可分支持向量机与硬间隔最大化
- cmake和make区别
- 罗马仕php30重量,认真测评 篇三:罗马仕sence8P+两年使用报告
- Springboot配置devtools实现热部署
- c++常用备忘(持续更新)
- 操作系统课设 Nachos 实验四、五:Nachos 的文件系统、扩展 Nachos 的文件系统
- 【状压dp】【POJ2288】Islands and Bridges【Hamilton路】