0

When i changed return value from User to Optional my UserResponseDTO returns null, it works properly when i change Optional to User, how to fix it?Database saves all the values i enter in postman

USER dao save method

 public Optional<User> saveUser(User user) {
    jdbcTemplate.update("INSERT INTO usr(username,password,email,country,gender) VALUES( ?, ?, ?, ?, ?)", user.getUsername(), user.getPassword()
            ,user.getEmail(),user.getCountry(),user.getGender().getId());
    return Optional.ofNullable(user);
}

USER service save method

public Optional<User> save(User user) {
    if(validate(user.getEmail())){
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        user.setRole(Role.USER);
        user.setStatus(Status.ACTIVE);
        Optional<User> userSaved = userDao.saveUser(user);
        return userSaved;
    }
    log.warn("U entered the wrong email");
    return Optional.ofNullable(user);
}

User controller save method

@ApiOperation(value = "getting the user data from request body and saving it to database")
@PostMapping(value = "")
public ResponseEntity<UserResponse> saveUser(@RequestBody UserRequest userRequest) {
    User userUntilSave = modelMapper.map(userRequest, User.class);
    Optional<User> user = userService.save(userUntilSave);
    UserResponse userResponse = modelMapper.map(user, UserResponse.class);
    return new ResponseEntity<>(userResponse, HttpStatus.CREATED);
}

Postman Screen enter image description here

freedman
  • 27
  • 8
  • Try using Optional.of() instead of Optional.ofNullable() https://stackoverflow.com/questions/31696485/why-use-optional-of-over-optional-ofnullable – Deepanshu Rathi Dec 07 '21 at 16:22
  • How about `User user = userService.save(userUntilSave).orElseThrow(SomeException::new);`? No point to map `Optional`. – pirho Dec 07 '21 at 19:23

1 Answers1

0

ModelMapper doesn't directly work on optionals, You need to set converters. Take a look at

ModelMapper handling java 8 Optional<MyObjectDto> fields to Optional<MyObject>

Deepanshu Rathi
  • 381
  • 1
  • 10