hibernate中json序列化对象时lazy已关闭异常的处理

来源:互联网 发布:斗鱼刷人气软件源代码 编辑:程序博客网 时间:2024/05/29 17:50

今天在运用jq 的 ajax技术 从servlet请求来json数据时遇到的一些问题:

在Servlet类进行数据转化代码如下:

[java] view plain copy
 print?
  1. JSONArray jsonArray = JSONArray.fromObject(schools);  
  2. response.getWriter().println(jsonArray);  
按照以上代码运行 出现了 异常.


原因是运用net.sf.json.*时,在web应用中缺少了相应的包.

在tomcat lib 下一查. 发现缺少 ezmorph-1.0.6.jar 包.


导入之后.继续运行程序,出现了一系列hibernate  lazy懒加载的错误.

原因是我的School 对象 与 StudentManger、Student 皆有相互关联关系,且默认lazy不为false.


于是我傻呵呵地将一个一个School中的对象在相应的hbm.xml中相应映射关系的lazy设置为false.

又发现了一个问题. StudentManger与Student又与其它类有着关联,又回到了刚刚阐述的问题.

那么是否为了得到JSON对象,我就得加载School对象时,同时加载那些我不关心的属性(如:students、studentMangers)呢? 在网上一查,发现了一系列解决方法.

以下解决方法我认为最为合适.


[java] view plain copy
 print?
  1. JsonConfig jsonConfig = new JsonConfig();  
  2. jsonConfig.setIgnoreDefaultExcludes(false);  
  3. jsonConfig.setExcludes(new String[]{"schoolManagers","students"});//需要排除的属性的名称  
  4.       
  5. JSONArray jsonArray = JSONArray.fromObject(schools,jsonConfig);  
[java] view plain copy
 print?
  1. response.setCharacterEncoding("utf-8");  

  1. response.getWriter().println(jsonArray);  




在gson中使用谷歌的排查类,具体为gsoncofiguer类
json则为jsoncof

0 0