解决多表关联转换json内存溢出

使用Hibernate时候对表关联,在把数据转换成Json时,由于两个字段相互包含,输出会引发内存溢出,下面的方法可以帮助你过滤掉其中一个字段,就不会内存溢出了

Gson gson= new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {  

@Override  
public boolean shouldSkipField(FieldAttributes f) {  
           //过滤掉字段名包含"products"的字段  
           return f.getName().contains("orderitems")||f.getName().contains("category");//过滤掉两个  
       }  
       @Override  
       public boolean shouldSkipClass(Class<?> clazz) {  
           //过滤掉 类名包含 Bean的类  
           return clazz.getName().contains("Product");  //两个方法,只用重写其中一个就好了
       }  
   }).create();  
result = gson.toJson(list);

jedis.set("category", result);

以下方法也可以解决:

2 在fastjson中还可以使用@JSONField注解来实现属性忽略策略[l1] ;

 但是这两种办法,查询出来了多余字段,

3可以优化hql语句来解决

4取消其中一方的关联来解决

猜你喜欢

转载自blog.csdn.net/lianbancai/article/details/77992325