Архитектура: Spring Boot, Spring JWT, Hibernate, MySQL
Текущая ситуация: правильно сгенерированный токен jwt во время регистрации пользователя.Также у меня нет проблем с логином.
Проблема: У меня проблема с ролями пользователей.Правильно был отправлен и т. Д., Но не сохраняет в базу данных.
У меня есть таблица пользователей:
@Entity
@Table(name="user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="login")
private String login;
@Column(name="password")
private String password;
@Column(name="email")
private String email;
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "user_roles", joinColumns = @JoinColumn(name = "id"))
@Column(name="role")
List<Role> roles;
public User(){}
public User(String login, String password, String email, List<Role> roles) {
this.login = login;
this.password = password;
this.email = email;
this.roles = roles;
}
//getters and setters, toString();
}
Перечисление ролей:
public enum Role implements GrantedAuthority {
ROLE_ADMIN,
ROLE_USER
@Override
public String getAuthority() {
return name();
}
}
Но там, где я использую пользователь findByLogin, информация о роли отсутствует.Но существует другая информация.
@Override
public User findByLogin(String loginUser) {
Session currentSession = entityManager.unwrap(Session.class);
Query findLoginQuery = currentSession
.createQuery("from User where login=:login")
.setParameter("login", loginUser);
return (User) findLoginQuery.uniqueResult();