Spring LDAP多值属性过滤查询遇错误码11求解决方案
问题解答
首先明确:多值属性完全支持这类等值过滤查询,你的代码写法本身没有问题。
你遇到的LDAP: error code 11 - Administrative Limit Exceeded错误,和多值属性过滤无关,本质是LDAP服务器设置了单查询返回结果的数量上限,而你的查询匹配到的条目数超过了这个限制。
解决办法:
- 分页查询:通过Spring LDAP的分页处理机制拆分结果,避免一次性返回过多条目。示例代码:
int pageSize = 100; // 根据服务器限制调整每页大小 PagedResultsDirContextProcessor pageProcessor = new PagedResultsDirContextProcessor(pageSize); do { List<String> uids = ldapTemplate.search( query().base("ou=People").attributes("uid") .where("objectclass").is("person") .and("department").is("Marketing"), (Attributes attrs) -> (String) attrs.get("uid").get(), pageProcessor ); // 处理当前页的uid列表 pageProcessor.resetCookie(); } while (pageProcessor.hasMore()); - 缩小查询范围:如果业务允许,把查询的base DN设得更具体(比如指定某个子OU),或者增加额外过滤条件(比如结合
cn、mail等属性),减少匹配的条目数量。 - 联系LDAP管理员:询问服务器的查询上限设置,看是否可以调整,或者让管理员协助优化查询策略。
内容的提问来源于stack exchange,提问作者jimny
相关产品推荐
相关产品推荐

