From e84eda1096bb447a4029290e1e2086cecefc4a81 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Thu, 13 Oct 2016 17:58:17 +0200 Subject: [PATCH] skip transient fields and also consider attribute names of non-annotated fields --- .../odm/core/impl/DefaultObjectDirectoryMapper.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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)