LdapRepository更新spring-ldap

时间:2015-10-22 18:21:23

标签: 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
}

人员回购界面:

public interface PersonRepo extends LdapRepository<Person> {
}

我是如何更新人的:

personRepo.save(person);

1 个答案:

答案 0 :(得分:1)

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

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

您也可以通过实施org.springframework.data.domain.Persistable来控制此问题,并将您的逻辑放在isNew()方法中。

请参阅implementation details