Si no pudiera encontrar un usuario en mi base de datos con una identificación dada. Quiero devolver una excepción en lugar de un Dto nulo, ¿cómo puedo hacer esto?
public UserDto updateUser(Long id, UserDto userDto) { UserDto userDtoNew = null; if (userRepository.findById(id).isPresent()) { User existingUser = userRepository.findById(id).get(); existingUser.setPassword(userDto.getPassword()); existingUser.setUserName(userDto.getUserName()); userDtoNew = userMapper.toDto(existingUser); return userDtoNew; } return userDtoNew; }Esta es una manera terrible de usar un Optional . Por favor, aprenda cómo usarlo correctamente.
return userRepository.findById(id) .map(it -> { it.setPassword(userDto.getPassword()); it.setUserName(userDto.getUserName()); }).map(userMapper::toDto) .orElseThrow(() -> new IllegalArgumentException("No user found for " + id)); Algo similar es cómo usar correctamente un Optional y lanzar una excepción si no se encuentra nada.
Idealmente, lo que se llama dentro de la función/método del map es solo una línea. Entonces, en lugar de tener el bloque de código con {} , es posible que desee moverlo a un método para que sea más legible.
private User update(User user, UserDto userDto) { user.setPassword(userDto.getPassword()); user.setUserName(userDto.getUserName()); return user; } return userRepository.findById(id) .map(it -> update(it, userDto)) .map(userMapper::toDto) .orElseThrow(() -> new IllegalArgumentException("No user found for " + id));