JPA: atualize apenas campos específicos
Existe uma maneira de atualizarapenas alguns campos de um objeto de entidade usando o métodosave
deSpring Data JPA?
Por exemplo, eu tenho uma entidade JPA como esta:
@Entity
public class User {
@Id
private Long id;
@NotNull
private String login;
@Id
private String name;
// getter / setter
// ...
}
Com seu repo CRUD:
public interface UserRepository extends CrudRepository<User, Long> { }
NoSpring MVC Eu tenho um controlador que recebe umUser
objeto para atualizá-lo:
@RequestMapping(value = "/rest/user", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<?> updateUser(@RequestBody User user) {
// Assuming that user have its id and it is already stored in the database,
// and user.login is null since I don't want to change it,
// while user.name have the new value
// I would update only its name while the login value should keep the value
// in the database
userRepository.save(user);
// ...
}
Eu sei que eu poderia carregar o usuário usandofindOne
, altere seu nome e atualize-o usandosave
... Mas se eu tiver 100 campos e quiser atualizar 50 deles, pode ser muito irritante alterar cada valor.
Não há como dizer algo como "pule todos os valores nulos ao salvar o objeto"?