使用Hibernate时候对表关联,在把数据转换成Json时,由于两个字段相互包含,输出会引发内存溢出,下面的方法可以帮助你过滤掉其中一个字段,就不会内存溢出了
Gson gson= new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
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取消其中一方的关联来解决