Java 在Liferay中搜索组织下的用户
我必须在liferay中搜索特定组织下的用户。目前,我们有一个可用的搜索Java 在Liferay中搜索组织下的用户,java,search,liferay,Java,Search,Liferay,我必须在liferay中搜索特定组织下的用户。目前,我们有一个可用的搜索 UserLocalService.search() 这是基于公司ID的。我想知道是否还有其他方法,甚至可以使用DynamicQueryFactoryUtil do fetch with organization filter。当然,您可以使用DynamicQuery来实现这一点 这可以分两个阶段完成 获取与给定组织关联的用户Id 将搜索条件与第一阶段接收到的id一起使用 代码如下所示 // Fetch userId
UserLocalService.search()
这是基于公司ID的。我想知道是否还有其他方法,甚至可以使用DynamicQueryFactoryUtil do fetch with organization filter。当然,您可以使用
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);
附言
我还没有测试过这段代码。但这是解决问题的方法
我希望它能帮助您。动态查询看起来不错,但我找到了另一种方法。我们可以使用Map传递组织id
params.put("usersOrgs", orgId);
List<User> searchResult = liferayUserLocalService.search(companyId, keyword, WorkflowConstants.STATUS_APPROVED, params, 0, -1, "");
params.put(“usersOrgs”,orgId);
List searchResult=liferayUserLocalService.search(公司ID,关键字,WorkflowConstants.STATUS\u APPROVED,参数,0,-1,”);
这将根据组织过滤用户。感谢您的回复。动态查询看起来不错,但我找到了另一种方法<代码>参数put(“usersOrgs”,orgId);List searchResult=liferayUserLocalService.search(公司ID,关键字,WorkflowConstants.STATUS\u APPROVED,参数,0,-1,obc)代码>我也有同样的问题。如果我想基于多个组织进行筛选,该怎么办?我可以在param Map中传递Orgid数组吗?。你能告诉我“用户”文档的方向吗?