当用户注册完成时,我试图将 setIs_active 的值设置为 true,但我已将方法 findByEmail 作为可选方法,但我无法将值设置为 true。有人能告诉我这是什么原因吗?
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";
}
最佳答案
您得到可选的用户对象而不是用户对象。
方式一:
User user = userRepository.findByEmail(token.getUser().getEmail()).orElse(null);
方式二: 检查存在然后设置:
Optional<User> user = userRepository.findByEmail(token.getUser().getEmail());
if (user.isPresent()) {
User user1 = user.get();
//set && save
}
关于spring-boot - 如何设置 spring boot 中可选的 getter 和 setter 方法的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61135849/