Hibernate 双向关联实体转Json

来源:互联网 发布:adobe flash mac 编辑:程序博客网 时间:2024/05/19 13:06

前言

对于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是属性名称:





原创粉丝点击