Java 使用Spring Boot从LDAP排序记录

Java 使用Spring Boot从LDAP排序记录,java,spring-boot,ldap,spring-ldap,Java,Spring Boot,Ldap,Spring Ldap,如何正确地从LDAP目录中获取已排序的记录。由于数据量大,将所有数据加载到内存然后进行排序非常耗时。 这就是为什么我希望(使用SpringBoot/SpringLDAP)从LDAP中获取已排序的记录 我试图在@Repository中创建 @Repository public interface XxxRepository extends LdapRepository<Xxx>, Serializable { List<Xxx> findAllByOrderByNa

如何正确地从LDAP目录中获取已排序的记录。由于数据量大,将所有数据加载到内存然后进行排序非常耗时。 这就是为什么我希望(使用SpringBoot/SpringLDAP)从LDAP中获取已排序的记录

我试图在@Repository中创建

@Repository
public interface XxxRepository extends LdapRepository<Xxx>, Serializable {

   List<Xxx> findAllByOrderByNameAsc(LdapQuery ldapQuery);

}
我的@服务

public void search() {
   String filterConditions = "(&(objectClass=Xxx)";
   filterConditions += "(name=*)";
   LdapQuery query = query().base(BASE_UNIT).filter(filterConditions + ")");
   List<Xxx> xxx= xxxRepository.findAllByOrderByNameAsc(query);
}
公共作废搜索(){
字符串筛选条件=“(&(objectClass=Xxx)”;
过滤条件+=“(名称=*)”;
LdapQuery query=query().base(base_单位).filter(filterConditions+);
List xxx=xxxRepository.findAllByOrderByNameAsc(查询);
}
我在这里找到了答案:

它使用了SortControlDirContextProcessor

供参考这与JPA API毫无关系
public void search() {
   String filterConditions = "(&(objectClass=Xxx)";
   filterConditions += "(name=*)";
   LdapQuery query = query().base(BASE_UNIT).filter(filterConditions + ")");
   List<Xxx> xxx= xxxRepository.findAllByOrderByNameAsc(query);
}
public void testSearch_SortControl_ConvenienceMethod() {
    SortControlDirContextProcessor requestControl;

    // Prepare for first search
    requestControl = new SortControlDirContextProcessor("cn");
    tested.search(BASE, FILTER_STRING, searchControls, callbackHandler,
            requestControl);
    int resultCode = requestControl.getResultCode();
    boolean sorted = requestControl.isSorted();
    assertThat("Search result should have been sorted: " + resultCode, sorted).isTrue();
    List list = callbackHandler.getList();
    assertSortedList(list);
}