I'm getting the following error : Cannot resolve method 'setEmail' in 'User'
in AuthService.java .
I try to add the constructor with parameters and it works. But why it doesn't work without ?
Here the classes :
AuthService.java
@Service
@AllArgsConstructor
@Slf4j
public class AuthService {
private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;
@Transactional
public void signup(RegisterRequest registerRequest) {
User user = new User();
user.setUsername(registerRequest.getUsername());
user.setEmail(registerRequest.getEmail());
user.setPassword(encodePassword(registerRequest.getPassword()));
user.setCreated(now());
user.setEnabled(false);
userRepository.save(user);
}
private String encodePassword(String password) {
return passwordEncoder.encode(password);
}
}
User.java
@Data //responsable des getters et setters
@Entity
@Builder //Builder methods pour nos classes (Christophe nous a montré des exemples)
@AllArgsConstructor
@NoArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long userId;
@NotBlank(message = "Le nom d'utilisateur est nécessaire")
private String username;
@NotBlank(message = "Le mot de passe est nécessaire")
private String password;
@Email
@NotEmpty(message = "l'email est nécessaire")
private String email;
private Instant created;
private boolean enabled;
}
UserRepository.java
import java.util.Optional;
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
}