Hibernate兩表多對多關係並引入第三表,JSON傳遞時出現死迴圈
There is a cycle in the hierarchy
出現原因:三表之間存在對映關係,若不限制迴圈,其中會由於表的外來鍵問題而出現錯誤
表:Permission 、Role 、PermissionRole
解決方法:
一、
Servlet:
List<PermissionRole> perRole = daoP.getPermissionByRoleId( long id );
List<Permission> list = new ArrayList<Permission>();
Permission p = null;
for(PermissionRole pr : perRole){
p = new Permission(pr.getPermission().getId(), pr.getPermission().getPermission(), pr.getPermission().getUrl(), pr.getPermission().getDescs()); //建構函式
list.add(p);
}
JSONArray json = JSONArray.fromObject(list);
Bean:
新增建構函式:
public Permission(String permission, String url, String descs) { //去除導致死迴圈的Set<PermissionRole> permissionRoles
this.permission = permission;
this.url = url;
this.descs = descs;
this.permissionRoles = permissionRoles;
}
二、
基於jar包:fastjson-1.2.3.jar
map 自定義。
SimplePropertyPreFilter filter = new SimplePropertyPreFilter( Permission.class,"id","所需列","所序列");
String josn=JSONArray.toJSONString(map,filter);
//把所需列提取出來,無需去除迴圈。
三:
忽略死迴圈問題。
JsonConfig jsonConfig = new JsonConfig(); //建立配置檔案
jsonConfig.setIgnoreDefaultExcludes(false); //設定預設忽略
jsonConfig.setExcludes(new String[]{
//這裡書寫需要過濾的東西,比如導致死迴圈的外來鍵。
});