Spring boot 如何设置在spring boot中可选的getter和setter方法的值

Spring boot 如何设置在spring boot中可选的getter和setter方法的值,spring-boot,optional,getter-setter,Spring Boot,Optional,Getter Setter,当用户注册完成时,我试图将setIs_active的值设置为true,但我将findByEmail方法作为可选方法,而不是我无法将该值设置为true。有人能告诉我这是什么原因吗 公共字符串确认帐户(字符串确认令牌) { ConfirmationToken=confirmationTokenRepository.findByConfirmationToken(ConfirmationToken); if(令牌!=null) { 可选用户=userRepository.findByEmail(tok

当用户注册完成时,我试图将setIs_active的值设置为true,但我将findByEmail方法作为可选方法,而不是我无法将该值设置为true。有人能告诉我这是什么原因吗

公共字符串确认帐户(字符串确认令牌)
{
ConfirmationToken=confirmationTokenRepository.findByConfirmationToken(ConfirmationToken);
if(令牌!=null)
{
可选用户=userRepository.findByEmail(token.getUser().getEmail());
user.setIs_active(true);//这里我得到一个错误
userRepository.save(user);//这里有一个错误
返回“您的帐户已激活”;
}
其他的
返回“错误!请重试”;
}

用户是可选的,因此不能在其上使用setter

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" ;
}
Optional user=userRepository.findByEmail(token.getUser().getEmail());
if(user.isPresent())
{
User myUser=User.get();
myUser.setIs_活动(true);
userRepository.save(用户);
返回“您的帐户已激活”;
}

您得到的是可选的用户对象,而不是用户对象

方式1:

User user = userRepository.findByEmail(token.getUser().getEmail()).orElse(null);
方式2: 检查是否存在,然后设置:

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

    if (user.isPresent()) {
    User user1 = user.get();
    //set && save
    }
Optional user=userRepository.findByEmail(token.getUser().getEmail());
if(user.isPresent()){
User user1=User.get();
//设置并保存(&S)
}