Я следующей схеме LDAP:Spring LDAP с динамической базой DN
Каждый поддерево содержит организации блок Team. Я хочу найти все команды из определенного поддерева. Для этого я использую класс LdapTemplate
и методы findAll()
.
ldapTemplate.findAll(Team.class);
Когда я устанавливаю базу в LdapContextSource
для dc=global,dc=id,dc=pl
она возвращает мне команды от глобального поддерева. Когда я меняю базу на dc=id,dc=pl
, она возвращает мне команды из всех поддеревьев.
Проблема в том, что я хочу использовать динамическую базу, чтобы найти команды из определенного поддерева. Я пробовал несколько методов для достижения этого, но ни один из них не дает мне результатов.
Метод 1: найти
Name nameBase = LdapUtils.newLdapName("dc=global");
return ldapTemplate.find(query().base(nameBase).where("ou").is("team"), Team.class);
возвращает пустой список
Метод 2: FindAll
Name nameBase = LdapUtils.newLdapName("dc=global");
SearchControls searchControls = new SearchControls();
return ldapTemplate.findAll(nameBase, searchControls, Team.class);
возвращает пустой список
В первый Похоже работает правильно, потому что, когда я изменить поддерево имя некоторые из которых не существует Я получаю javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]
Любые идеи, почему я получаю правильные результаты в этом коде:
LdapContextSource contextSource = new LdapContextSource();
contextSource.setBase("dc=global,dc=id,dc=pl");
LdapTemplate ldapTemplate = new LdapTemplate(contextSource);
return ldapTemplate.findAll(Team.class);
И пустые список из этого:
LdapContextSource contextSource = new LdapContextSource();
contextSource.setBase("dc=id,dc=pl");
LdapTemplate ldapTemplate = new LdapTemplate(contextSource);
Name nameBase = LdapUtils.newLdapName("dc=global");
SearchControls searchControls = new SearchControls();
return ldapTemplate.findAll(nameBase, searchControls, Team.class);
Я использую Spring-LDAP-ядро 2.0.3