How to set the value for getter and setter method which is optional in spring boot

Viewed 1427

I am trying to set the value of setIs_active to true when user registration gets complete but I have taken method findByEmail as optional not I am not able to set the value to true.Can ayone tell me what is the reason for that?

 public String confirmAccount(String confirmationToken)
        {
            ConfirmationToken token = confirmationTokenRepository.findByConfirmationToken(confirmationToken);
            if(token != null)
            {
                Optional<User> user = userRepository.findByEmail(token.getUser().getEmail());
                user.setIs_active(true);//here I am getting error
                userRepository.save(user);//here I am getting error
                return "Your account is activated" ;
            }
            else
                return "Error ! Please try again";

        }
2 Answers

You get Optional User object not user object.

Way 1:

User user = userRepository.findByEmail(token.getUser().getEmail()).orElse(null);

Way 2: check is Present then set:

Optional<User> user = userRepository.findByEmail(token.getUser().getEmail());

    if (user.isPresent()) {
    User user1 = user.get();
    //set && save
    }

User is an optional, so you cant use the setter on it.

Optional<User> user = userRepository.findByEmail(token.getUser().getEmail());

if(user.isPresent()) 
{
    User myUser = user.get();
    myUser.setIs_active(true);
    userRepository.save(user);
    return "Your account is activated" ;
}
Related