Я пытаюсь обновить объект (используя операцию сохранения) только поле, отправленное в запросе покоя, без необходимости устанавливать каждого поля в запросе. Я думал, что @DynamicUpdate поможет мне в этом, но он только улучшает запрос к базе данных, обновляя только изменяемые поля. Как и ожидалось, отправка только нескольких полей для обновления не отправленных полей будет иметь значение NULL. Кто-нибудь знает способ сделать это без всей проверки, если поля в запросе и сделать набор? Где мой код:
Запрос на изменение адреса электронной почты пользователя 1.
"id": 1,
"email": "test@gmail.com"
}
Обновление метода пользователя из сервиса:
public User updateUser(User user) throws UserServiceException {
if (user.getFirstName() != null && user.getFirstName().length() == 0)
throw new BadRequestException("First Name not valid");
if (user.getLastName() != null && user.getLastName().length() == 0)
throw new BadRequestException("Last Name not valid");
if (user.getCity() != null && user.getCity().length() == 0)
throw new BadRequestException("City not valid");
if (user.getEmail() != null && !isValidEmailAddress(user.getEmail()))
throw new BadRequestException("Email not valid");
if (user.getPassword() != null) {
if (!isValidPassword(user.getPassword())) {
throw new BadRequestException("Password not valid");
} else {
bCryptPasswordEncoder = new BCryptPasswordEncoder();
user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
}
}
return userRepository.save(user);
}
Очень спасибо !!