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