我需要做一个查询,将搜索所有用户,位于两个不同的OU。举例来说:
base1: "OU=ou2,OU=ou1" base2 : "OU=ou3,OU=ou1"
字符串如何使用LdapTemplate完成此操作?我使用的是 Sping Boot 3.1.1 和Spring Ldap。我希望能够在一个查询中完成此操作,但我知道这是不可能的。如果我运行两个查询,是否可以合并结果而无需手动重新排序?非常感谢您的回答!
rjee0c151#
这是我应用的解决方案(例如,通过Fullname进行搜索):
public List<User> findAllByFullname(String fullname) { LdapQuery query1 = getFullnameQuery(User.BASE1, fullname); LdapQuery query2 = getFullnameQuery(User.BASE2, fullname); List<User> users1 = ldapTemplate.find(query1,User.class); List<User> users2 = ldapTemplate.find(query2,User.class); List<User> users = new ArrayList<>(); users.addAll(users1); users.addAll(users2); Collections.sort(users, Comparator.comparing(User::getFullname)); return users; } private LdapQuery getUsernameQuery(String base, String username) { return LdapQueryBuilder.query().base(base).where("sAMAccountName").is(username); }
字符串这显然是不理想的,所以不要犹豫,如果你有更好的解决方案。谢谢。
1条答案
按热度按时间rjee0c151#
这是我应用的解决方案(例如,通过Fullname进行搜索):
字符串
这显然是不理想的,所以不要犹豫,如果你有更好的解决方案。谢谢。