Есть ли способ для обновления только некоторых полей объекта сущности, используя метод save
от Spring данных JPA?
Например, у меня есть объект JPA, такой как:
@Entity
public class User {
@Id
private Long id;
@NotNull
private String login;
@Id
private String name;
// getter / setter
// ...
}
С его CRUD-репо:
public interface UserRepository extends CrudRepository<User, Long> { }
В Spring MVC У меня есть контроллер, который получает объект User
для его обновления:
@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);
// ...
}
Я знаю, что могу загрузить пользователя с помощью findOne
, а затем изменить его имя и обновить его с помощью save
... Но если у меня есть 100 полей, и я хочу обновить 50 из них, это может быть очень неприятным изменением каждое значение..
Нет ли способа сказать что-то вроде " пропустить все нулевые значения при сохранении объекта"