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 426bb0a9f..f5dadf4a8 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 @@ -1171,7 +1171,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App map.put(key, read(defaultedValueType, (BasicDBObject) value, path)); } else if (value instanceof DBRef) { map.put(key, DBRef.class.equals(rawValueType) ? value - : readAndConvertDBRef((DBRef) value, defaultedValueType, ObjectPath.ROOT, rawValueType != null ? rawValueType : ClassTypeInformation.OBJECT.getType())); + : readAndConvertDBRef((DBRef) value, defaultedValueType, ObjectPath.ROOT, rawValueType)); } else if (value instanceof List) { map.put(key, readCollectionOrArray(valueType != null ? valueType : ClassTypeInformation.LIST, (List) value, path)); @@ -1575,7 +1575,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App @Nullable private T readAndConvertDBRef(@Nullable DBRef dbref, TypeInformation type, ObjectPath path, - final Class rawType) { + @Nullable Class rawType) { List result = bulkReadAndConvertDBRefs(Collections.singletonList(dbref), type, path, rawType); return CollectionUtils.isEmpty(result) ? null : result.iterator().next(); @@ -1598,7 +1598,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App @SuppressWarnings("unchecked") private List bulkReadAndConvertDBRefs(List dbrefs, TypeInformation type, ObjectPath path, - final Class rawType) { + @Nullable Class rawType) { if (CollectionUtils.isEmpty(dbrefs)) { return Collections.emptyList(); @@ -1614,7 +1614,8 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App for (Document document : referencedRawDocuments) { if (document != null) { - maybeEmitEvent(new AfterLoadEvent<>(document, (Class) rawType, collectionName)); + maybeEmitEvent( + new AfterLoadEvent<>(document, (Class) (rawType != null ? rawType : Object.class), collectionName)); } final T target = (T) read(type, document, path); 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 c4820fdce..8a46cf875 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 @@ -75,7 +75,6 @@ import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty; import org.springframework.data.mongodb.core.mapping.PersonPojoStringId; import org.springframework.data.mongodb.core.mapping.TextScore; import org.springframework.data.util.ClassTypeInformation; -import org.springframework.data.util.TypeInformation; import org.springframework.test.util.ReflectionTestUtils; import com.mongodb.BasicDBList;