1. 程式人生 > 其它 >解決$ref引用問題,以及繫結ManyToMany關係後引發的棧溢位錯誤

解決$ref引用問題,以及繫結ManyToMany關係後引發的棧溢位錯誤

小程式突然在前臺拿資料的時候發現出現了$ref引入問題,導致資料為空

![1651750703191](

)

當資料欄位單獨存在沒做雙向繫結的時候我們可以直接通過在return 的toJSONString()中加入SerializerFeature.DisableCircularReferenceDetect方法就可以解決,如圖:

![1651753323913](

)

但是當欄位之間存在ManyToMany多對多雙向資料繫結的關係時則會出現“棧溢位”的錯誤,情況如下圖

![1651753634104](

)

這個時候我們需要用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的引用問題

大佬點個訂閱再走唄~!