2011-06-07 9 views
5

में एक भूमिका के साथ सभी उपयोगकर्ताओं को प्राप्त करना मैं सामान्य रूप से लिफ़ेरे विकास के लिए नया हूं, इसलिए यह इंगित करने में संकोच न करें कि मैं पूरी तरह से गलत तरीके से सामान के बारे में जा रहा हूं या नहीं।Liferay

मैं किसी निश्चित समूह के भीतर सभी उपयोगकर्ताओं का एक डायनामिकQuery ऑब्जेक्ट प्राप्त करने का प्रयास कर रहा हूं (मैं इस ऑब्जेक्ट का उपयोग किसी अन्य क्वेरी को फ़िल्टर करने के लिए करूंगा जो मैं संदेश बोर्ड के खिलाफ करूंगा)। User इंटरफ़ेस में roleIds प्रॉपर्टी है जो मैं उपयोग करने में सक्षम हो सकता हूं, क्योंकि मुझे पहले से ही roleId पता है, लेकिन मुझे roleIdsमें एक निश्चित मान है, तो मुझे क्वेरी करने का उचित तरीका नहीं मिल रहा है।

मैं क्या करना चाहता हूं पर कोई विचार?

पीएस: मेरे पास सटीक एसक्यूएल क्वेरी होगी जो मैं सीधे पूछ सकता हूं, लेकिन मैं कुछ अजीब अतिरिक्त परियोजना चीज़ों की आवश्यकता के बिना, Liferay के अपने कनेक्शन पूल का उपयोग करना चाहूंगा।

उत्तर

7

जीवनभर की वस्तुओं को एक्सेस करने का सबसे आसान तरीका XXXServiceUtil कक्षाओं (उदाहरण के लिए RoleServiceUtil.getUserRoles(userId)) का उपयोग करके है। इस प्रकार आपको शायद ही कभी किसी भी एसक्यूएल से निपटना होगा। या तो RoleServiceUtil या UserServiceUtil आपको जो चाहिए वह हो सकता है।

8

आपको एक डायनामिकQuery की आवश्यकता नहीं है। इन विधियों आप वर्गों है कि एक प्रकार की कटार बताते हैं में देख रहे हैं:

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

मैं उन उपयोगकर्ताओं को प्राप्त करना चाहता हूं जिन्होंने विशिष्ट संगठन भूमिका निभाई है, मुझे भूमिका की भूमिका आईडी मिली है लेकिन उस रोल आईडी से जुड़े यूएसर्स को प्राप्त करने में सक्षम नहीं है। मुझे यह भी पता चला कि प्रविष्टियां USerGroupTable के अंदर हैं। क्या आप कृपया मेरी मदद कर सकते हैं .... – Prem

+0

आप 'UserLocalServiceUtil.getRoleUsers (roleId) का उपयोग कर सकते हैं' –

0

एक संगठनों की भूमिका तालिका UserGroupRole में जमा हो जाती है, इसलिए यदि आप के मालिक प्राप्त करना चाहते हैं: आप किसी दिए गए समुदाय के भीतर एक दिया भूमिका के साथ सभी उपयोगकर्ताओं के लिए देख रहे हैं

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

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

for (UserGroupRole userGroupRoleTemp : allOrganizationAdministrators) { 
    administrators.add(userGroupRoleTemp.getUser()); 
} 
: आप सभी एक संगठन के संगठन मालिकों को पुनः प्राप्त करना चाहते हैं

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

: एक संगठन आप निम्नलिखित कोड का उपयोग करना चाहिए

चीयर्स!