Я новичок в Spring, и я следовал этому уроку Spring Rest Services
чтобы понять, как работает oAuth с REST API.
До этого мое приложение работало нормально.
При работе с учебником мне потребовалось, чтобы моя сущность User
реализовала UserDetails
. И мне пришлось добавить дополнительный List<String> roles
, потому что он используется в моем UserDetailsImpl
сервисе, который реализует UserDetailsService
.
И теперь, когда я запускаю mvn spring-boot:run
, я получаю сообщение об ошибке, упомянутое в заголовке.
Я посмотрел в Интернете, но большинство проблем было связано с ассоциациями таблиц через определенный столбец, но в моем коде нет типа сопоставления, сопоставленного столбцу roles
.
Вот моя User
сущность:
@Entity
public class User implements UserDetails {
@Id
private UUID id;
private String name;
private String email;
private String password;
private List<String> roles;
public User (){
}
public User (String email, String name, String password, UUID id, List<String> roles){
this.email = email;
this.name = name;
this.password = password;
this.id = id;
this.roles = roles;
}
public String getEmail() {
return email;
}
public String getName() {
return name;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return null;
}
@Override
public String getPassword() {
return password;
}
@Override
public String getUsername() {
return email;
}
@Override
public boolean isAccountNonExpired() {
return false;
}
@Override
public boolean isAccountNonLocked() {
return false;
}
@Override
public boolean isCredentialsNonExpired() {
return false;
}
@Override
public boolean isEnabled() {
return false;
}
public UUID getId() {
return id;
}
List<String> getRoles() {
return roles;
}
public void setPassword(String password) {
this.password = password;
}
public void setEmail(String email) {
this.email = email;
}
public void setName(String name) {
this.name = name;
}
public void setId(UUID id) {
this.id = id;
}
}
А это мой UserDetailsImp
сервис:
@Service
public class UserDetailsImp implements UserDetailsService {
@Autowired
UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
User user = userRepository.getOneByEmail(email);
UserBuilder builder = null;
if( user != null){
builder.username(user.getEmail()).password(user.getPassword()).roles(String.join("",user.getRoles()));
} else {
throw new UsernameNotFoundException("User not found");
}
return builder.build();
}
}
Любая помощь будет принята с благодарностью.