解決多表關聯轉換json記憶體溢位
阿新 • • 發佈:2018-12-30
使用Hibernate時候對錶關聯,在把資料轉換成Json時,由於兩個欄位相互包含,輸出會引發記憶體溢位,下面的方法可以幫助你過濾掉其中一個欄位,就不會記憶體溢位了
Gson gson=new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
@Overridepublic 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取消其中一方的關聯來解決