2011-06-07 29 views
5

我是Liferay開發的新手,所以請隨時指出我是否完全錯誤地使用了某些東西。獲得Liferay中角色的所有用戶

我想要獲得某個組內所有用戶的DynamicQuery對象(我將使用此對象進一步過濾另一個查詢,我將對該留言板進行過濾)。 User接口似乎有roleIds屬性,我可能會使用,因爲我已經知道我感興趣的roleId但我找不到正確的方法來查詢如果roleIds包含某個值。

關於我想做什麼的想法? PS:我會直接詢問確切的SQL查詢,但我寧願使用Liferay自己的連接池,而不需要做一些奇怪的ext項目。

回答

7

訪問生活自己的對象最簡單的方法是使用XXXServiceUtil類(例如RoleServiceUtil.getUserRoles(userId))。因此你很少需要直接處理任何SQL。 RoleServiceUtilUserServiceUtil可能有你需要的。

8

您不需要DynamicQuery。這些是你在一個德克指出的類尋找方法:

long[] UserServiceUtil.getRoleUserIds(long roleId) 

long[] UserLocalServiceUtil.getRoleUserIds(long roleId) 
List<User> UserLocalServiceUtil.getRoleUsers(long roleId) 

請記住,在類XXXLocalServiceUtil方法不檢查當前用戶的權限。

編輯:如果你正在尋找所有用戶與特定社區內的給定角色:

long companyId= _X_; //Perhaps CompanyThreadLocal.getCompanyId() if you don't have it anywhere else? 
Role role=RoleLocalServiceUtil.getRole(companyId, "Example Role"); 
Group group=GroupLocalServiceUtil.getGroup(companyId, "Example Community"); 
List<UserGroupRole> userGroupRoles = UserGroupRoleLocalServiceUtil. 
         getUserGroupRolesByGroupAndRole(groupId, role.getRoleId()); 
for(UserGroupRole userGroupRole:userGroupRoles){ 
    User oneUser=userGroupRole.getUser(); 
} 
+0

我想獲得分配了特定組織角色的用戶,我得到角色的角色ID,但無法獲得與該角色ID相關聯的用戶。我也知道這些條目在USerGroupTable中。你能幫我... – Prem 2012-03-20 07:23:23

+0

你可以利用'UserLocalServiceUtil.getRoleUsers(roleId)' – 2013-04-21 07:41:34

0

一個組織的作用是存儲在表UserGroupRole,所以如果你想要得到的主人如果你想獲取所有組織的組織業主

boolean isOrgOwner = 
    UserGroupRoleLocalServiceUtil.hasUserGroupRole(
     usr.getUserId(), 
     this.currentOrganization.getGroupId(), 
     RoleConstants.ORGANIZATION_OWNER); 

List<User> administrators = new LinkedList<>(); 

List<UserGroupRole> allOrganizationAdministrators = 
    UserGroupRoleLocalServiceUtil.getUserGroupRolesByGroupAndRole(
     this.currentOrganization.getGroupId(), roleId); 

for (UserGroupRole userGroupRoleTemp : allOrganizationAdministrators) { 
    administrators.add(userGroupRoleTemp.getUser()); 
} 
的組織必須使用下面的代碼

乾杯!

相關問題