程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 如何決解項目中hibernate中多對多關系中對象轉換json死循環,hibernatejson

如何決解項目中hibernate中多對多關系中對象轉換json死循環,hibernatejson

編輯:JAVA綜合教程

如何決解項目中hibernate中多對多關系中對象轉換json死循環,hibernatejson


先寫一下原因吧!我是寫的SSH項目,在項目中我遇到的問題是把分頁對象(也就是pageBean對象)轉化為json數據,下面為代碼:

public class PageBean <T>{
//當前頁
private int pageNum;
//頁面顯示數量
private int pageSize; 
//查詢總數(查詢數據庫所得)
private int totalRecord;
//當前頁開始索引
private int startIndex; 
//總頁面數
private int totalPage; 
//數據
private List<T> data;

由於我寫的是組與成員之間的組那塊,組與成員

在hibernate關系是多對多關系,當你想把組成員對象集合轉化為jsong格式,那麼你應該發現在成員對象中是包含組對象集合的,而組對象是包含成員對象的集合。這就是問題所在,也是異常

freemarker.template.TemplateModelException: Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: There is a cycle in the hierarchy!
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)

因為你想把組對象轉為為json對象,那麼在轉化時必然會去把成員對象轉化為json,所以導致死循環。

你要做的事破除該死循環,附上所有代碼

PageBean<User> resultUser = userService.findUserByUse(evenFind);//查找所有用戶組對象數據並封裝到分頁對象中
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject = new JSONObject();
if(resultUser != null){

//循環把每個對象取出,生成json對象,不能直接生成json數組對象,否則會報原來的錯誤,
if(resultUser.getData().size()>0){
for(int i= 0 ;i<resultUser.getData().size();i++){
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setIgnoreDefaultExcludes(true);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
//防止自包含
String [] strArry= {"userGounp"};

//需要去除轉化為json對象的屬性名稱
jsonConfig .setExcludes(strArry);
JSONObject json = JSONObject.fromObject(resultUser.getData().get(i),jsonConfig);

//添加到json對象數組中
jsonArray.add(json);
}
}
jsonObject.put("data",jsonArray);
jsonObject.put("pageSize",resultUser.getPageSize());
jsonObject.put("pageNum", resultUser.getPageNum());
}

第一次寫,寫的不好還請諒解。全為自己手寫,和思路。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved