diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java index 279b93bd3..1df9f9be7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java @@ -263,7 +263,7 @@ public class QueryMapper { return result; } - return source instanceof DBRef ? source : converter.toDBRef(source, property); + return source == null || source instanceof DBRef ? source : converter.toDBRef(source, property); } /** diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java index 7478c276d..7c0f44525 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java @@ -335,6 +335,18 @@ public class QueryMapperUnitTests { assertThat(reference.containsField("$in"), is(true)); } + /** + * @see DATAMONGO-570 + */ + @Test + public void correctlyConvertsNullReference() { + + Query query = query(where("reference").is(null)); + DBObject object = mapper.getMappedObject(query.getQueryObject(), context.getPersistentEntity(WithDBRef.class)); + + assertThat(object.get("reference"), is(nullValue())); + } + class IdWrapper { Object id; }