java - LdapRepository 更新 spring-ldap

标签 java spring ldap spring-ldap

当我尝试更新 LDAP 数据库中的现有对象时,Spring LdapRepository save() 方法抛出异常。

org.apache.directory.api.ldap.model.exception.LdapEntryAlreadyExistsException: ERR_250_ENTRY_ALREADY_EXISTS

我应该使用什么方法来更新现有的 ldap 对象?

人员类别:

@Entry(objectClasses = { "inetOrgPerson", "organizationalPerson", "person", "top" })
public class Person implements Serializable {

public Person() {
}

@Id
private Name dn;

@Attribute(name = "cn")
@DnAttribute(value = "cn")
@JsonProperty("cn")
private String fullName;

@Attribute(name = "uid")
private String uid;

private String mail;

@Attribute(name = "sn")
private String surname;
//setters and getters
}

人员 repo 接口(interface):

public interface PersonRepo extends LdapRepository<Person> {
}

这就是我更新人员的方式:

personRepo.save(person);

最佳答案

Spring LDAP 存储库的默认实现是 SimpleLdapRepository ,它检查用 @Id 注释的属性,以确定对象是 - 并执行创建,还是 - 并执行更新。

我猜测当您尝试执行更新时,Person.dnnull

您还可以通过实现org.springframework.data.domain.Persistable来控制它,并将逻辑放在isNew()方法中。

请参阅implementation details .

关于java - LdapRepository 更新 spring-ldap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33288011/

相关文章:

java动态类加载

java - Play Framework : PDF'ing a template that uses highcharts JS library via a Job

java - 线性布局 : Aligning to the Right of the parent

java - 使用 Spring 和 Hibernate 的嵌套事务

java - 当我使用 LayoutInflater 时按钮 View.OnClickListener

java - 我可以在不同的 Spring Controller 中使用不同参数的相同映射值吗?

Spring mvc - WebArgumentResolver 的实现

Java Spring NtlmProcessingFilter 第二个 Controller

java - 如何在 spring security 中从 ldap 中检索一些字段

svn - 使用 LDAP 进行 SVN 用户认证