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 71cdb1eee..e9eda4274 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 @@ -1121,7 +1121,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)); @@ -1524,7 +1524,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(); @@ -1547,7 +1547,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(); @@ -1563,7 +1563,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 df2f48872..ff07a2224 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 @@ -82,7 +82,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;