如果自定义Java对象包含LineString 类型字段,返回前端时会报死循环嵌套错误 @Transient @Column(name = "line", columnDefinition = "geometry(LineString,4326)") private LineString line;
Map<String, Object> fiberLinkMap = null; Map<String, Object> cableLinkMap = null; try { fiberLinkMap = PropertyUtils.describe(fiberLink); cableLinkMap = PropertyUtils.describe(cableLink); } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { logger.error(e.getMessage(), e); } fiberLinkMap = filterKeys(fiberLinkMap, (key) -> !StringUtils.equals("class", key) && !StringUtils.equals("dataService", key)); cableLinkMap = filterKeys(cableLinkMap, (key) -> !StringUtils.equals("class", key) && !StringUtils.equals("dataService", key) && !StringUtils.equals("line", key)); Map<String, Object> result = new HashMap(1); result.put("fiberLink", fiberLinkMap); result.put("cableLink", cableLinkMap); result.put("fibers", fiberList); result.put("cableSegments", cableSegmentList);
单独使用PropertyUtils.describe方法可以,但是在循环里使用,即使过滤掉line字段,也是报错;