解决$ref引用问题,以及绑定ManyToMany关系后引发的栈溢出错误

小程序突然在前台拿数据的时候发现出现了$ref引入问题,导致数据为空

当数据字段单独存在没做双向绑定的时候我们可以直接通过在return 的toJSONString()中加入SerializerFeature.DisableCircularReferenceDetect方法就可以解决,如图:

但是当字段之间存在ManyToMany多对多双向数据绑定的关系时则会出现“栈溢出”的错误,情况如下图

这个时候我们需要用new对象的方式把数据存入new出的对象当中,具体操作如下

JSONObject jSONObject= new JSONObject();
List<User> users=new ArrayList<User>();
for(User user:userService.getUsers()) {//这里返回的是一个List<User>集合
  User saveUser = new User();
  saveUser.setUsername(user.getUsername());
  saveUser.setPhone(user.getPhone());
  saveUser.setEmail(user.getEmail());
  //因为这里从数据库拿到的是一个Set集合所以重新new了一个set集合
  Set<Dept> setDepts=new HashSet<Dept>() ;
  //这个方法是自己写的sql通过多表联查条件userId拿到的部门数据
  setDepts.add(deptService.getDeptnameByuserid(user.getId()));
  saveUser.setDept(setDepts);
  users.add(saveUser);
		}
jSONObject.put("users",users);
return obj.toJSONString(jSONObject,SerializerFeature.DisableCircularReferenceDetect);

这样我们就解决了$ref的引用问题

大佬点个订阅再走呗~!

posted @ 2022-05-05 20:44  一只小狐疑  阅读(59)  评论(0编辑  收藏  举报