将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决:采用过滤器
2013-03-08 20:14
573 查看
有一个A表,和B表,是one to many的关系。当我将B表从数据库中查出后.
通过:
JSONArray responseJsonMsgs=JSONArray.fromObject(list);
转成Json对象时报错: There is a cycle in the hierarchy!
稍微想想就能明白,这里产生了死循环查询(跟hibernate的配置文件有关)。
解决方案,在转成Json对象的时候过滤掉bean中引起死循环查询的属性(一般为设置的外键)。
我这里写了一个通用的过滤器对象,大家可以借鉴下
package com.cfc.web.msgcenter;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;
public class JsonFilter {
public static JsonConfig getFilter(final String[] s){
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new PropertyFilter(){
public boolean apply(Object source, String name, Object value) {
if(juge(s,name)) {
return true;
} else {
return false;
}
}
public boolean juge(String[] s,String s2){
boolean b = false;
for(String sl : s){
if(s2.equals(sl)){
b=true;
}
}
return b;
}
});
return config;
}
}
转换的时候调用过滤器
JsonConfig config = JsonFilter.getFilter(new String[]{"gameclass"});//String数组中存储的是要过滤的属性
JSONArray responseJsonMsgs=JSONArray.fromObject(list,config);
问题解决!
通过:
JSONArray responseJsonMsgs=JSONArray.fromObject(list);
转成Json对象时报错: There is a cycle in the hierarchy!
稍微想想就能明白,这里产生了死循环查询(跟hibernate的配置文件有关)。
解决方案,在转成Json对象的时候过滤掉bean中引起死循环查询的属性(一般为设置的外键)。
我这里写了一个通用的过滤器对象,大家可以借鉴下
package com.cfc.web.msgcenter;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;
public class JsonFilter {
public static JsonConfig getFilter(final String[] s){
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new PropertyFilter(){
public boolean apply(Object source, String name, Object value) {
if(juge(s,name)) {
return true;
} else {
return false;
}
}
public boolean juge(String[] s,String s2){
boolean b = false;
for(String sl : s){
if(s2.equals(sl)){
b=true;
}
}
return b;
}
});
return config;
}
}
转换的时候调用过滤器
JsonConfig config = JsonFilter.getFilter(new String[]{"gameclass"});//String数组中存储的是要过滤的属性
JSONArray responseJsonMsgs=JSONArray.fromObject(list,config);
问题解决!
相关文章推荐
- 将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决:采用过滤器
- 将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决
- 将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决
- 将具有关联关系的两个表从hibernate查询出来转成json对象时报错
- 解决Hibernate原生SQL映射问题 - SQL查询出来的结果映射为值对象
- 关于json格式存储数据库成bean对象list,取出来再次转换成json格式
- fastjson序列化hibernate代理和延迟加载对象出现no session异常的解决办法
- 源码变换 超文本标记语言(即HTML),是用于描述网页文档的一种标记语言。 HTML通过文本来描述文档显示出来应该具有的“样子”。它主要通过标签来定义对象的显示属性或行为。
- hibernate + spring mvc,解决Hibernate对象懒加载,json序列化失败
- json解决hibernate中级联对象延迟加载问题net.sf.json.JSONException: org....
- fastjson序列化hibernate代理和延迟加载对象出现no session异常的解决办法
- JavaWeb学习笔记-Hibernate-05-实体对象与数据库关键词冲突解决方法
- Hibernate的方法获取对象后,对象调用set后会自动更新数据库内容的解决办法
- 解决json转换hibernate 结果集对象
- hibernate+spring mvc,解决hibernate对象懒加载,json序列化失败
- json解决hibernate中级联对象延迟加载问题net.sf.json.JSONException: org....
- 通过请求不同的url返回Json对象并在前端显示的解决方法
- HIBERNATE两个相同的标识符挂不同对象的解决
- Hibernate通过什么方法可以把私有成员变量赋值成数据库查询到的值然后返回POJO对象呢?
- hibernate+spring mvc,解决hibernate对象懒加载,json序列化失败