diff --git a/pom.xml b/pom.xml index 7cb1d10f85..d9b3ce6eb8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 3.3.0-SNAPSHOT + 3.3.0-GH-3851-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml index 0033bd11d5..3c3b11f83a 100644 --- a/spring-data-mongodb-benchmarks/pom.xml +++ b/spring-data-mongodb-benchmarks/pom.xml @@ -7,7 +7,7 @@ org.springframework.data spring-data-mongodb-parent - 3.3.0-SNAPSHOT + 3.3.0-GH-3851-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index f62c8dc7f4..c103ec08f1 100644 --- a/spring-data-mongodb-distribution/pom.xml +++ b/spring-data-mongodb-distribution/pom.xml @@ -14,7 +14,7 @@ org.springframework.data spring-data-mongodb-parent - 3.3.0-SNAPSHOT + 3.3.0-GH-3851-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 2f73c10eba..395f494c1c 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -11,7 +11,7 @@ org.springframework.data spring-data-mongodb-parent - 3.3.0-SNAPSHOT + 3.3.0-GH-3851-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 8a4fece215..fa8b4c9643 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -828,7 +828,7 @@ protected void writePropertyInternal(@Nullable Object obj, DocumentAccessor acce return; } - if (prop.isAssociation()) { + if (prop.isAssociation() && prop.isAnnotationPresent(Reference.class)) { accessor.put(prop, new DocumentPointerFactory(conversionService, mappingContext) .computePointer(mappingContext, prop, obj, valueType.getType()).getPointer()); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java index ca94ac6e3c..d4c735fd23 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java @@ -2614,7 +2614,26 @@ void readsMapThatDoesNotComeAsDocument() { ClassWithMapProperty target = converter.read(ClassWithMapProperty.class, source); assertThat(target.mapOfObjects).containsEntry("simple",1); + } + + @Test // GH-3851 + void associationMappingShouldFallBackToDefaultIfNoAtReferenceAnnotationPresent/* as done via jmolecules */() { + + UUID id = UUID.randomUUID(); + Person sourceValue = new Person(); + sourceValue.id = id.toString(); + + DocumentAccessor accessor = new DocumentAccessor(new org.bson.Document()); + MongoPersistentProperty persistentProperty = mock(MongoPersistentProperty.class); + when(persistentProperty.isAssociation()).thenReturn(true); + when(persistentProperty.getFieldName()).thenReturn("pName"); + doReturn(ClassTypeInformation.from(Person.class)).when(persistentProperty).getTypeInformation(); + doReturn(Person.class).when(persistentProperty).getType(); + doReturn(Person.class).when(persistentProperty).getRawType(); + + converter.writePropertyInternal(sourceValue, accessor, persistentProperty); + assertThat(accessor.getDocument()).isEqualTo(new org.bson.Document("pName", new org.bson.Document("_id", id.toString()))); } static class GenericType {