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"?

questionAnswers(6)

yourAnswerToTheQuestion