Пытаюсь разбираться со спрингом постепенно создавая пет проект. У меня есть 2 Entity: User, Role. Они связаны ManyToMany.
Вот кусок связи из класса User:
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "user_role", joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "role_id")})
private Set<Role> roles = new HashSet<>();
Добавляю в проект Spring Security. Когда тестировал с
@Bean
@Override
public UserDetailsService userDetailsService() {
UserDetails user =
User.withDefaultPasswordEncoder()
.username("user")
.password("password")
.roles("USER")
.build();
return new InMemoryUserDetailsManager(user);
}
и авторизовался по этим данным, то все окай, Когда по гайдам реализовал свой UserDetailsService
@Service
public class UserService implements UserDetailsService {
@Autowired
IUserRepository userRepo;
@Override
public UserDetails loadUserByUsername(final String username) throws UsernameNotFoundException {
return userRepo.getByLogin(username);
}
}
И в конфиге Spring Security заменил на него, то при попытке авторизоваться имею вот такую ошибку:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
There was an unexpected error (type=Internal Server Error, status=500).
failed to lazily initialize a collection of role: com.pet.model.User.roles, could not initialize proxy - no Session
Сессия закрывается и не читает данные ролей пользователей. Кто может посоветовать как решить траблу? Роли лежат в Бд, класс Role - Entity. Что пробовал: 1. Менять LAZY на EAGER - ошибка "No message available"; 2. Пробовал проставть над сервисами @Transactional. - толку ноль.
В проекте Spring Data JPA. Пробовал добавить SQL запросом юзера, потом роль и связать их. После этого в тесте хотел получить его роль (user.getRoles() который возвращает сет) имею всегда ошибку.
Проблема решилась иным способом. Пришлось создать отдельный репозиторий для ролей и подгружать роли из базы.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я пытаюсь создать некий Repository для хранения данных между событиями жизненного цикла Android приложенияСледую архитектуре паттерна MVVM, также...
Приветсвую, есть у меня в коде класс ConfirmDialog, цель которого при нажатии кнопки Продолжить, выполнить действие, а при нажатии отмена, убрать...