diff --git a/core/src/main/java/org/springframework/ldap/odm/core/impl/DefaultObjectDirectoryMapper.java b/core/src/main/java/org/springframework/ldap/odm/core/impl/DefaultObjectDirectoryMapper.java index 8d837986..0d1ea91e 100644 --- a/core/src/main/java/org/springframework/ldap/odm/core/impl/DefaultObjectDirectoryMapper.java +++ b/core/src/main/java/org/springframework/ldap/odm/core/impl/DefaultObjectDirectoryMapper.java @@ -117,9 +117,18 @@ public class DefaultObjectDirectoryMapper implements ObjectDirectoryMapper { Set managedAttributeNames = new HashSet(); // extract all relevant attributes for (Field field : entityData.metaData) { - String[] attributesOfField = entityData.metaData.getAttribute(field).getAttributes(); + AttributeMetaData attributeMetaData = entityData.metaData.getAttribute(field); + // skip transient field + if (attributeMetaData.isTransient()) { + continue; + } + String[] attributesOfField = attributeMetaData.getAttributes(); if (attributesOfField != null && attributesOfField.length > 0) { + // attribute names are either given through annotation managedAttributeNames.addAll(Arrays.asList(attributesOfField)); + } else { + // or implicitly by relying on the field name + managedAttributeNames.add(field.getName()); } } // always add the mandatory attribute objectclass (which is always used for the mapping)