6

私はLiferayの開発全般に慣れていないので、まったく間違った方法で作業している場合は、遠慮なく指摘してください。

特定のグループ内のすべてのユーザーのDynamicQueryオブジェクトを取得しようとしています(このオブジェクトを使用して、メッセージボードに対して実行する別のクエリをさらにフィルタリングします)。興味のあることはすでにわかっているのでUser、インターフェイスにはroleIds使用できる可能性のあるプロパティがあるようです。しかし、特定の値が含まれroleIdているかどうかを照会する適切な方法が見つかりません。roleIds

私がやりたいことについて何かアイデアはありますか?

PS:直接尋ねることができる正確なSQLクエリがありますが、奇妙なextプロジェクトを実行する必要なしに、Liferay独自の接続プールを使用したいと思います。

4

3 に答える 3

8

DynamicQueryは必要ありません。これらは、Dirkが指摘するクラスで探しているメソッドです。

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();
}
于 2011-06-28T16:45:52.880 に答える
7

liferays自身のオブジェクトにアクセスする最も簡単な方法は、XXXServiceUtilクラス(eg RoleServiceUtil.getUserRoles(userId))を使用することです。したがって、SQLを直接処理する必要はほとんどありません。またはのいずれかRoleServiceUtilUserServiceUtil必要なものを持っている可能性があります。

于 2011-06-07T10:11:14.537 に答える
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());
}

乾杯!

于 2014-07-01T13:48:08.293 に答える