Hibernate 双向关联实体转Json
2017-06-13 10:46
573 查看
前言
对于Hibernate中双向关联实体转换成Json中,会包错:JSONException: There is a cycle in the hierarchy!,会点英语的都知道这句话是什么意思,就是在转换Json的过程中出现了死循环,就是因为实体中存在了互相关联的原因。遇到这类原因你先不要就去百度了,先自己思考Json转换之前是不是需要配置一些信息可以解决过滤问题,此时你可以在你自己的代码基础之上看,Json字符开头的有哪些类,你将会看到JsonConfig这个类的时候,你就看字面意思就是Json转换配置了,再想配置肯定是set()方法之类的,那么这时候你就先敲出set看看有哪些方法:
这时候你是不是看到了一个希望和奇迹并存的单词Exclude:排除,是的希望就在眼前了,那么再看它有哪些参数:
看着是一个String[]数组,那么就对了,是他是他就是他,我们的希望排除他,此时我们就可以完善自己的代码:
ArrayList<Good> goodList = (ArrayList<Good>) HibernateUtils.query("from Good where cart_id = ?", new Object[]{"1"});
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{"user","goods"});
JSONArray responseJsonMsgs=JSONArray.fromObject(goodList,jsonConfig);
System.out.print(responseJsonMsgs.toString());
看看输出日志:
Hibernate: select good0_.cart_id as cart1_1_, good0_.user_id as user2_1_, good0_.good_id as good3_1_, good0_.good_name as good4_1_, good0_.good_price as good5_1_ from exercise.good
good0_ where cart_id=?
此处的排除的user和goods是属性名称:
对于Hibernate中双向关联实体转换成Json中,会包错:JSONException: There is a cycle in the hierarchy!,会点英语的都知道这句话是什么意思,就是在转换Json的过程中出现了死循环,就是因为实体中存在了互相关联的原因。遇到这类原因你先不要就去百度了,先自己思考Json转换之前是不是需要配置一些信息可以解决过滤问题,此时你可以在你自己的代码基础之上看,Json字符开头的有哪些类,你将会看到JsonConfig这个类的时候,你就看字面意思就是Json转换配置了,再想配置肯定是set()方法之类的,那么这时候你就先敲出set看看有哪些方法:
这时候你是不是看到了一个希望和奇迹并存的单词Exclude:排除,是的希望就在眼前了,那么再看它有哪些参数:
看着是一个String[]数组,那么就对了,是他是他就是他,我们的希望排除他,此时我们就可以完善自己的代码:
ArrayList<Good> goodList = (ArrayList<Good>) HibernateUtils.query("from Good where cart_id = ?", new Object[]{"1"});
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{"user","goods"});
JSONArray responseJsonMsgs=JSONArray.fromObject(goodList,jsonConfig);
System.out.print(responseJsonMsgs.toString());
看看输出日志:
Hibernate: select good0_.cart_id as cart1_1_, good0_.user_id as user2_1_, good0_.good_id as good3_1_, good0_.good_name as good4_1_, good0_.good_price as good5_1_ from exercise.good
good0_ where cart_id=?
此处的排除的user和goods是属性名称:
相关文章推荐
- 递归算法:解决hibernate实体外键关联,导致json解析死循环!
- springboot 使用hibernate进行双向关联json解析时死循环处理
- hibernate注解之实体属性OneToOne 单双向关联(三)
- Hibernate实体关系映射:双向主键一对一关联
- Hibernate表关联对象转Json双向关联解析过度
- Hibernate中的延迟加载、实体关联单向一对多及双向一对多实体关联
- hibernate双向关联和json-lib使用的死循环问题的解决
- hibernate双向关联转化为Json数据
- Hibernate双向关联转Json死循环问题(Gson)
- Hibernate双向一对一外键关联
- 对JPA实体关系管理双向关联的一些思考
- Hibernate一对一双向关联
- Hibernate 一对一主键双向关联
- Hibernate_一对多双向关联(实例)
- hibernate多对一双向关联
- hibernate_0200_多对一双向关联
- json返回hibernate的结果会自动调用(get)查询出关联表的数据,解决方法
- Hibernate的many-to-many双向关联需要注意的要求及简单示例
- 在测试Hibernate的一对多双向关联映射时
- Hibernate一对一外键双向关联(Annotation配置篇)