2011-06-07 71 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()); 
} 
的组织必须使用下面的代码

干杯!

相关问题