文章标题
2017-11-22 21:17
381 查看
Java中用流程框架activiti5,查询流程定义数据时,如果查询的表为自关联的表,就会出现死循环的情况
例如:
@RestController
public class ActivitiController extends BaseController {
}
报错如下:
Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Direct self-reference leading to cycle; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: java.util.ArrayList[0]->org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity[“processDefinition”])
解决办法:将查询出来的数据遍历出来再封装成Map集合形式
@RestController
public class ActivitiController extends BaseController {
}
例如:
@RestController
public class ActivitiController extends BaseController {
@Autowired private RepositoryService repositoryService; @RequestMapping("/act/queryDataList/{startindex}/{pagesize}") public List<ProcessDefinition> queryDataList(@PathVariable("startindex") Integer startindex, @PathVariable("pagesize") Integer pagesize) { ProcessDefinitionQuery definitionQuery = repositoryService.createProcessDefinitionQuery(); List<ProcessDefinition> listPage = definitionQuery.listPage(startindex, pagesize); return listPage; }
}
报错如下:
Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Direct self-reference leading to cycle; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: java.util.ArrayList[0]->org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity[“processDefinition”])
解决办法:将查询出来的数据遍历出来再封装成Map集合形式
@RestController
public class ActivitiController extends BaseController {
@Autowired private RepositoryService repositoryService; @RequestMapping("/act/queryDataList/{startindex}/{pagesize}") public List<Map<String,Object>> queryDataList(@PathVariable("startindex") Integer startindex, @PathVariable("pagesize") Integer pagesize) { ProcessDefinitionQuery definitionQuery = repositoryService.createProcessDefinitionQuery(); List<ProcessDefinition> listPage = definitionQuery.listPage(startindex, pagesize); List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); for (ProcessDefinition processDefinition : listPage) { Map<String,Object> obj = new HashMap<String,Object>(); obj.put("id", processDefinition.getId()); obj.put("name", processDefinition.getName()); obj.put("version", processDefinition.getVersion()); obj.put("key", processDefinition.getId()); obj.put("deployid", processDefinition.getDeploymentId()); list.add(obj); } return list; }
}