나는 liferay에서 특정 조직의 사용자를 검색해야합니다. 현재 우리는 회사 ID를 기반으로Liferay의 조직에서 사용자 검색
UserLocalService.search()
사용할 검색이 있습니다. DynamicQueryFactoryUtil을 사용하여 조직 필터와 함께 가져 오는 다른 방법이 있는지 궁금합니다.
나는 liferay에서 특정 조직의 사용자를 검색해야합니다. 현재 우리는 회사 ID를 기반으로Liferay의 조직에서 사용자 검색
UserLocalService.search()
사용할 검색이 있습니다. DynamicQueryFactoryUtil을 사용하여 조직 필터와 함께 가져 오는 다른 방법이 있는지 궁금합니다.
동적 쿼리는 좋아 보이지만 다른 방법을 찾았습니다. 지도를 사용하여 조직 ID를 전달할 수 있습니다.
params.put("usersOrgs", orgId);
List<User> searchResult = liferayUserLocalService.search(companyId, keyword, WorkflowConstants.STATUS_APPROVED, params, 0, -1, "");
조직을 기반으로 사용자를 필터링합니다.
물론 이것을 달성하기 위해 DynamicQuery
을 사용할 수 있습니다.
이 두 단계에서 수행 할 수 있습니다
,id
과 함께 검색 조건을 사용하십시오.그래서 코드는이 코드를 테스트하지 않았습니다
// Fetch userId List form Organization id
long[] organiztionIds = UserLocalServiceUtil.getOrganizationUserIds(orgId);
DynamicQuery searchQuery = DynamicQueryFactoryUtil.forClass(User.class, UserLocalServiceUtil.class.getClassLoader());
Criterion searchCriteria = PropertyFactoryUtil.forName("companyId").eq(companyid);
//Add Organization Id in Criterion
if (organiztionIds.length != 0) {
searchCriteria =
RestrictionsFactoryUtil.and(RestrictionsFactoryUtil.in("userId", ArrayUtils.toObject(organiztionIds)), searchCriteria);
}
if (!firstName.isEmpty()) {
searchCriteria = RestrictionsFactoryUtil.or(RestrictionsFactoryUtil.eq("firstName", firstName), searchCriteria);
}
if (!middleName.isEmpty()) {
searchCriteria = RestrictionsFactoryUtil.or(RestrictionsFactoryUtil.eq("middleName", middleName), searchCriteria);
}
if (!lastName.isEmpty()) {
searchCriteria = RestrictionsFactoryUtil.or(RestrictionsFactoryUtil.eq("lastName", lastName), searchCriteria);
}
if (!screenName.isEmpty()) {
searchCriteria = RestrictionsFactoryUtil.or(RestrictionsFactoryUtil.eq("screenName", screenName), searchCriteria);
}
searchQuery.add(searchCriteria);
UserLocalServiceUtil.dynamicQuery(searchQuery);
P.S, 다음과 같이 보일 것이다. 그러나 이것이 이것을하는 방법입니다.
나는 그것이 당신을 돕길 바랍니다.
답장을 보내 주셔서 감사합니다. 동적 쿼리는 좋아 보이지만 다른 방법을 찾았습니다. 'params.put ("usersOrgs", orgId); List
동일한 문제가있었습니다. 여러 조직을 기반으로 필터링하고 싶다면 어떻게해야합니까? param Map에 orgId 배열을 전달할 수 있습니까? 'usersOrgs'의 문서화 방향을 가르쳐 주시겠습니까? –