包如下的错:java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
1.在一个对象的属性中使用@ManyToOne对于某一个关联的字段时,在使用findAll会报如下的错,如下图是在一个对象中使用了@ManyToOne
但是findAll会报如下的错,并且查询时返回很多的字段和数据,但是有些不是你想要的,如下图所示
解决方法:
在查询的时候,不返回@ManyToOne注解的这个字段即可解决这个错,代码如下
@RequestMapping(method = RequestMethod.GET)
public Object listAllStreams(@RequestBody JSONObject param) {
JSONObject result;
try {
List<Stream> streams = streamService.listAll(param);
JSONArray jsonArray = new JSONArray();
for(Stream stream:streams){
JSONObject object = new JSONObject();
object.fluentPut("name",stream.getName()).fluentPut
("fields",stream.getFields()).fluentPut
("from", stream.getFrom()).fluentPut
("groupBy",stream.getGroupBy()).fluentPut
("identifier",stream.getIdentifier()).fluentPut("keyBy",
stream.getKeyBy()).fluentPut("solution",stream.getSolution());
jsonArray.add(object);
}
result = onSuccess(streams);
} catch (Exception e) {
log.error("{query all stream failed, reason : {}}", e);
String error = e.getMessage();
result = onFail(error);
}
return result;
}
最后返回的结果与预期一样。这是个人的经验总结,如有更好欢迎讨论。