Сортированные записи из LDAP с Spring Boot - PullRequest
0 голосов
/ 29 января 2019

Как правильно получить отсортированные записи из каталога LDAP.Загрузка всего в память, а затем сортировка занимает много времени из-за большого объема данных.Вот почему я хочу (с помощью Spring Boot / SpringLDAP) получить уже отсортированные записи из LDAP.

Я пытался создать в @Repository

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

   List<Xxx> findAllByOrderByNameAsc(LdapQuery ldapQuery);

}

Не работает, NullPointerException.

Мой @Entity выглядит так:

@Entry(base = "", objectClasses = {"xxx", "xxx"})
public class Xxx implements Serializable {
   @Id
   private Name dn;

   @Attribute(name = "name")
   @DnAttribute(value = "name", index = 0)
   private String name;

   .
   .
   .
}

Мой @ Сервис

public void search() {
   String filterConditions = "(&(objectClass=Xxx)";
   filterConditions += "(name=*)";
   LdapQuery query = query().base(BASE_UNIT).filter(filterConditions + ")");
   List<Xxx> xxx= xxxRepository.findAllByOrderByNameAsc(query);
}

1 Ответ

0 голосов
/ 29 января 2019

Я нашел ответ здесь: Spring-LDAP LdapTemplateSortedSearchITest

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);
}

Используется SortControlDirContextProcessor .

...