我有一個標記爲實體的User類,它也實現了UserDetails。我希望能夠獲取某個用戶的某些屬性,並根據它們的值返回getAuthorities
方法中的特定角色。然而,這些屬性中的很多都是延遲加載的,並且需要Hibernate事務。在使用UserDetailsService時對數據庫進行事務性調用
我嘗試了使用戶類@Transactional
到製作UserDetailsService
和RememberMeService
,我使用@Transactional
。這些工作都沒有!
我所有的其他DAO和服務類的映射爲事務性工作(和他們只是簡單的類 - 除了一個@Transactional之上沒有其他註釋)
UPDATE:這是階級用戶被覆蓋的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;
}
不清楚問題是什麼?然後延遲加載您的authorites,或更改爲渴望提取... – NimChimpsky 2012-04-16 13:07:58
@Transactional不起作用。至少在這種情況下, – preslavrachev 2012-04-16 13:09:28
錯誤信息是什麼?顯示一些代碼。你是否堅持每個用戶授予權限 - 只是把它當作任何其他屬性來對待。 – NimChimpsky 2012-04-16 13:10:06