我正在尝试在活动目录中查询所有人员对象。有超过700,000
个结果,无法读入List
。我当前的解决方案是使用分页获取所有结果,但我宁愿使用Java-8 Stream-API来获取它们。不幸的是,我没有在LdapTemplate
上找到任何返回Stream
对象的方法。
我知道这可以返回所有结果:
public List<LdapPerson> findAll() {
return ldapTemplate.search("","(objectClass=person)", mapper);
}
但是我正在寻找的东西可以返回:
public Stream<LdapPerson> findAll(){
return ldaptemplate.?????????;
}
有人能指出我正确的方向吗?
答案 0 :(得分:1)
否,LdapTemplate
没有提供直接从搜索到的元素中返回Stream<T>
的方法。但是,由于方法LdapTemplate::search
返回了List<T>
,因此您可以使用 any Collection<T>
的特征,该特征可以使用以下命令转换为Stream<T>
collection.stream()
方法的简单调用:
public Stream<LdapPerson> findAll() {
return ldapTemplate.search("", "(objectClass=person)", mapper).stream();
}