我目前有一个服务,它接收三个参数并在使用 Angular 从前端接收数据时毫无问题地执行更新,我保存的数据来自可修改表的字段,但它仅按行执行,单个编号
这是我在控制器中的方法,有我的服务和我的查询
@PutMapping("/{cveEstado}/{comentario}/{idControl}")
private void actualizaDatos(@PathVariable("cveEstado") String cveEstado, @PathVariable("comentario") String comentario,
@PathVariable("idControl") String idControl){
controlService.actualizar(cveEstado, comentario, idControl);
}
服务和存储库
@Override
public void actualizar(String cveEstado, String comentario, String idControl) {
repository.actualizarCampos(cveEstado, comentario, idControl);
}
@Transactional
@Modifying
@Query(value = "UPDATE CONTROL C SET CVEESTADO=?1, COMENTARIO=?2 WHERE C.IDCONTROL=?3",
nativeQuery = true)
void actualizarCampos(String cveEstado, String comentario, String idControl);
但现在我想保存整个数组,也就是说,我可以更新所有字段或一些字段但具有不同的 ids
例如
我应该如何修改我的服务和我的查询以接收这样的数据,请有人帮助我
谢谢
你应该有一个对应于你的资源模型的类,这样 spring 就可以从请求体中反序列化它:
@PutMapping("/comments")
private void actualizaDatos(@RequestBody List<Comment> comments){
// you probably should return an http status instead of void
}
“评论”是您的 json 对象的 java 类表示。如果模型匹配,spring 会将一个 json 对象数组反序列化为一个 java 对象列表。
class Comment {
int idControl;
String cveEstado;
(...)
}
注意:在 REST 中一次更新多个资源是不好的做法,一个元素中的任何错误都很难检测到,因为整批都会出错,而客户端不知道为什么。