Java 使用findAll时,Spring数据Ldap存储库返回empriy列表

Java 使用findAll时,Spring数据Ldap存储库返回empriy列表,java,spring-boot,ldap,spring-data,spring-ldap,Java,Spring Boot,Ldap,Spring Data,Spring Ldap,我正在尝试使用 <dependency> <groupId>org.springframework.ldap</groupId> <artifactId>spring-ldap-core</artifactId> <version>2.3.2.RELEASE</version> </dependency>

我正在尝试使用

<dependency>
            <groupId>org.springframework.ldap</groupId>
            <artifactId>spring-ldap-core</artifactId>
            <version>2.3.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-ldap</artifactId>
            <version>2.1.5.RELEASE</version>
        </dependency>
入学类别:

@Entry(base = "cn=eshop,ou=mpass,cn=admin,dc=userlogin,dc=mpass,dc=ltd", objectClasses = { "posixGroup", "inetOrgPerson", "top" })
public class LdapUser {

    @Id
    private Name id;

    private @Attribute(name = "cn") String fullName;
    private @Attribute(name = "mail") String email;
    private @Attribute(name = "uidNumber") String uidNumber;

    public LdapUser() {
    }

    public LdapUser(String fullName, String email, String uIdNumber) {
        this.fullName = fullName;
        this.email = email;
        this.uidNumber = uidNumber;
    }

    public Name getId() {
        return id;
    }

    public void setId(Name id) {
        this.id = id;
    }

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String password) {
        this.email = email;
    }

    public String getUidNumber() {
        return uidNumber;
    }

    public void setUidNumber(String uidNumber) {
        this.uidNumber = uidNumber;
    }

    @Override
    public String toString() {
        return fullName;
    }

}
存储库:

@Repository
public interface LdapUserRepository extends LdapRepository<LdapUser> {

    LdapUser findByFullName(String fullName);

    LdapUser findByEmail(String email);

    LdapUser findByUidNumber(String uidNumber);

    List<LdapUser> findByEmailLikeIgnoreCase(String email);

    List<LdapUser> findByEmailNotLike(String email);

}
@存储库
公共接口LdapUserRepository扩展了LdapRepository{
LdapUser findByFullName(字符串fullName);
LdapUser findByEmail(字符串电子邮件);
LdapUser findByUidNumber(字符串uidNumber);
列出findByEmailLikeIgnoreCase(字符串电子邮件);
列表findByEmailNotLike(字符串电子邮件);
}
获取用户查询:

  LdapQuery query = query().base("cn=eshop,ou=mpass,cn=admin,dc=userlogin,dc=mpass,dc=ltd")
                .searchScope(SearchScope.ONELEVEL)
                .where("objectclass").is("inetOrgPerson");
        Iterable<LdapUser> ldapUsers = ldapUserRepository.findAll(query);
LdapQuery query=query().base(“cn=eshop,ou=mpass,cn=admin,dc=userlogin,dc=mpass,dc=ltd”)
.searchScope(searchScope.ONELEVEL)
其中(“objectclass”)为(“inetOrgPerson”);
Iterable ldapUsers=ldapUserRepository.findAll(查询);
这将返回一个空列表

我尝试了没有参数的ldapUserRepository.findAll(),但它不起作用。它说javax.naming.NameNotFoundException:[LDAP:错误代码32-没有这样的对象]

我试过这个答案,但毫无帮助

任何帮助都将不胜感激。 提前谢谢 下面是Ldap服务器树的打印屏幕:

您在查询和条目对象中都提供了条目的完整dn作为基础。我觉得这些有点不对劲。正确的方法是:

在配置中:
“cn=admin,dc=userlogin,dc=mpass,dc=ltd”

在条目中:
“cn=eshop,ou=mpass”

您提供了条目的完整dn作为查询和条目对象的基础。我觉得这些有点不对劲。正确的方法是:

在配置中:
“cn=admin,dc=userlogin,dc=mpass,dc=ltd”

在条目中:
“cn=eshop,ou=mpas”

我的条目中有一个错误的ObjectClass。PosixGroup是错误的。我用PosixAccount替换了它,它可以正常工作

我的条目中有一个错误的ObjectClass。PosixGroup是错误的。我用PosixAccount替换了它,它可以正常工作

  LdapQuery query = query().base("cn=eshop,ou=mpass,cn=admin,dc=userlogin,dc=mpass,dc=ltd")
                .searchScope(SearchScope.ONELEVEL)
                .where("objectclass").is("inetOrgPerson");
        Iterable<LdapUser> ldapUsers = ldapUserRepository.findAll(query);