Привет, у меня есть две сущности: Пользователь и Полномочия, они имеют отношение ко многим:
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "user_role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "authority_id") })
private List<Authority> authorities = new ArrayList<Authority>(0);
, когда я использую FetchType.LAZY
и пытаюсь получить права доступа пользователя, я получаю исключение:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
вот как я получаю объект пользователя:
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
User user = userDao.findUserByEmail(username);
if (user == null)
throw new UsernameNotFoundException("No user with username '"
+ username + "' found!");
return new org.springframework.security.core.userdetails.User(
user.getEmail(), user.getPassword(), true, true, true, true,
setUserAuthorities(user.getAuthorities()));
}
Я использую фабрику сеансов для управления своими транзакциями и @Transactional
в методе dao.так есть какие-нибудь идеи или решения для этой проблемы?