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[]{

//这里书写需要过滤的东西,比如导致死循环的外键。

});  


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值