解决因为hibernate的懒加载引起的json 序列化失败的问题
来源:互联网 发布:sai软件下载官方下载 编辑:程序博客网 时间:2024/04/24 14:40
在使用hibernate的过程中, 对于某些关联的属性对象 有进行懒加载的操作, 这时如果存在懒加载的对象,进行json序列化的时候,会报错。
可以使用一个过滤器,进行 过滤不需要被序列化的属性,主要是应用于Hibernate的代理和管理。
代码如下
package com.lazyant.util;import org.hibernate.collection.spi.PersistentCollection;import org.hibernate.proxy.HibernateProxy;import org.hibernate.proxy.LazyInitializer;import com.alibaba.fastjson.serializer.PropertyFilter;public class HibernatePropertyFilter implements PropertyFilter {/** * 过滤不需要被序列化的属性,主要是应用于Hibernate的代理和管理。 * @param object 属性所在的对象 * @param name 属性名 * @param value 属性值 * @return 返回false属性将被忽略,ture属性将被保留 */@Overridepublic boolean apply(Object object, String name, Object value) {if (value instanceof HibernateProxy) {//hibernate代理对象LazyInitializer initializer = ((HibernateProxy) value).getHibernateLazyInitializer();if (initializer.isUninitialized()) {return false;}} else if (value instanceof PersistentCollection) {//实体关联集合一对多等PersistentCollection collection = (PersistentCollection) value;if (!collection.wasInitialized()) {return false;}Object val = collection.getValue();if (val == null) {return false;}}return true;}}
在需要json序列化前,先实例化该对象
例如
HibernatePropertyFilter filter = new HibernatePropertyFilter(); List<Order> orderList = orderService.findList(status, user.getId(), null); String jsonString = JSON.toJSONString(orderList, filter, SerializerFeature.DisableCircularReferenceDetect);
备注: 使用 SerializerFeature.DisableCircularReferenceDetect 的目的在于 解决 FastJSON中 "$ref 循环引用"的问题
具体可看 解决FastJson中“$ref 循环引用”的问题
1 0
- 解决因为hibernate的懒加载引起的json 序列化失败的问题
- hibernate+spring mvc,解决hibernate对象懒加载,json序列化失败
- hibernate+spring mvc,解决hibernate对象懒加载,json序列化失败
- hibernate + spring mvc,解决Hibernate对象懒加载,json序列化失败
- Spring MVC返回hibernate对象序列化json报懒加载出错的问题
- hibernate对象懒加载,json序列化失败
- ibatis懒加载导致对象json化失败,ibatis和hibernate的懒加载对比
- 由于hibernate懒加载引起的异常
- spring解决hibernate懒加载的问题
- 一个因为顺序问题引起的错误!
- 加载 MonoBehaviour 类时, public属性因为序列化所产生的性能开销问题
- hibernate的查询是懒加载引起的错误
- hibernate的查询是懒加载引起的错误
- 解决json-lib的一些序列化循环处理问题
- spring+hibernate引起的延迟加载
- 解决hibernate懒加载的问题的几种方式
- 解决hibernate 序列化死循环的问题
- 解决Hibernate延迟加载出现的问题
- android View 动态注解方式,初始化注入对象原理及实现过程
- mybatis Example条件查询
- HTML 5.1的10大新功能详解
- PAT BASIC LEVEL 1040. 有几个PAT(25)
- mysql_建立索引的优缺点
- 解决因为hibernate的懒加载引起的json 序列化失败的问题
- 关于border-radius 以及 /50px
- 内存优化
- aplusb
- 我的web前端自学之路-心得篇:我为什么要学习web前端?
- AngularJS常用指令
- jquery之飘雪
- Swift 中实现字典
- androoid 6.0权限动态配置