diff --git a/src/main/java/org/springframework/data/neo4j/core/mapping/EntityFromDtoInstantiatingConverter.java b/src/main/java/org/springframework/data/neo4j/core/mapping/EntityFromDtoInstantiatingConverter.java index 381a360d7..0fa063aa2 100644 --- a/src/main/java/org/springframework/data/neo4j/core/mapping/EntityFromDtoInstantiatingConverter.java +++ b/src/main/java/org/springframework/data/neo4j/core/mapping/EntityFromDtoInstantiatingConverter.java @@ -26,6 +26,7 @@ import org.springframework.data.mapping.PreferredConstructor.Parameter; import org.springframework.data.mapping.SimplePropertyHandler; import org.springframework.data.mapping.model.ParameterValueProvider; import org.springframework.data.util.ClassTypeInformation; +import org.springframework.data.util.ReflectionUtils; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -102,11 +103,17 @@ public final class EntityFromDtoInstantiatingConverter implements Converter sourceAccessor) { String targetPropertyName = targetProperty.getName(); + Class targetPropertyType = targetProperty.getType(); PersistentProperty sourceProperty = sourceEntity.getPersistentProperty(targetPropertyName); + Object propertyValue = null; if (sourceProperty != null) { - return sourceAccessor.getProperty(sourceProperty); + propertyValue = sourceAccessor.getProperty(sourceProperty); } - return null; + if (propertyValue == null && targetPropertyType.isPrimitive()) { + return ReflectionUtils.getPrimitiveDefault(targetPropertyType); + } + + return propertyValue; } } diff --git a/src/test/java/org/springframework/data/neo4j/integration/shared/common/Person.java b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Person.java index d9a2a3c6c..e0d1633c5 100644 --- a/src/test/java/org/springframework/data/neo4j/integration/shared/common/Person.java +++ b/src/test/java/org/springframework/data/neo4j/integration/shared/common/Person.java @@ -30,6 +30,8 @@ public class Person { private String firstName; private String lastName; + private int primitiveValue; // never used but always null + @Relationship("LIVES_AT") private Address address; /**