当我尝试在Apache Directory Studio中使用查询(testAtt=1)
搜索记录时,他们会显示17062
条记录,当我在Java代码上运行相同的查询时,它们只获得8531
条记录。我的Java代码如下所示
String searchFilter = propFile.getProperty(Constants.GetAllUsersQuery);
String ldapSearchBase = propFile.getProperty(Constants.eDir_SearchBase);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<SearchResult> resultsApp = ctx.search(ldapSearchBase, searchFilter, searchControls);
int i = 0;
while (resultsApp.hasMoreElements()) {
SearchResult result = (SearchResult) resultsApp.next();
String DN = "";
DN = result.getNameInNamespace();
if (!DN.isEmpty()) {
eDir_AllUsersDNList.add(i, DN);
i++;
}
resultsApp.nextElement();
}
System.out.println("eDir_AllUsersDNList : "+eDir_AllUsersDNList.size());
请帮我找出问题所在。 我使用的是Java 8。
答案 0 :(得分:0)
while (resultsApp.hasMoreElements()) {
SearchResult result = (SearchResult) resultsApp.next();
String DN = "";
DN = result.getNameInNamespace();
if (!DN.isEmpty()) {
eDir_AllUsersDNList.add(i, DN);
i++;
}
resultsApp.nextElement();
}
删除最终的nextElement()
电话。它没有任何用处,它正在跳过所有偶数元素。请注意,8531是17062的一半。
注意,转换是多余的,并且DN不能为空,并且当你在下一行分配它时为它提供初始化器是没有意义的。