我有一个基于弹簧MVC的简单回复API,使用JPA连接的MySQL数据库。到目前为止,此 API 仅支持实体的完整更新。这意味着必须在请求正文中提供所有字段。
@ResponseBody
@PutMapping(value = "{id}")
public ResponseEntity<?> update(@Valid @RequestBody Article newArticle, @PathVariable("id") long id) {
return service.updateById(id, newArticle);
}
这里真正的问题是验证,我如何在创建过程中仍然需要所有字段时仅验证提供的字段?
@Entity
public class Article {
@NotEmpty @Size(max = 100) String title;
@NotEmpty @Size(max = 500) String content;
// Getters and Setters
}
部分更新请求正文(而不是 )的示例。实际的部分更新是通过检查给定字段是否不为空来完成的:{"content": "Just a test"}{"title": "Title", "content": "Just a test"}
if(newArticle.getTitle() != null) article.setTitle(newArticle.getTitle());
但验证当然是行不通的!我必须停用更新方法的验证才能运行 RESTful 服务。我基本上有两个问题:
如何在更新方法中仅验证属性的“现有”子集,同时在创建过程中仍需要所有字段?
有没有一种更优雅的方法来部分更新,然后检查空值?
ABOUTYOU
相关分类