我有一个标记为实体的用户类,它也实现了 UserDetails。我希望能够获取某个用户的一些属性,并根据它们的值返回getAuthorities
方法中的特定角色。然而,其中许多属性都是延迟加载的,并且需要 Hibernate 事务。
我尝试了从制作用户类@Transactional
到制作我使用的UserDetailsService
and的任何方法。这些都不起作用!RememberMeService
@Transactional
我的所有其他 DAO 和服务类都映射为事务性工作(它们只是简单的类 - 除了顶部的 @Transactional 之外没有其他注释)
更新:这是用户类中覆盖的 getUserDetails
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
GrantedAuthority auth = new GrantedAuthority() {
@Override
public String getAuthority() {
// TODO Auto-generated method stub
return "ROLE_USER";
}
};
ArrayList<GrantedAuthority> result = new ArrayList<GrantedAuthority>();
if (options.size() > 0) {
for (Option o : options) {
result.add(createAuthority(Option.getStringType(o.type)));
}
}
result.add(auth);
return result;
}