diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryMapper.java index 559a607df..72c78dcbe 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryMapper.java @@ -100,7 +100,7 @@ public class QueryMapper { value = convertId(value); } else if (value instanceof DBObject) { newDbo.put(newKey, getMappedObject((DBObject) value, entity)); - return newDbo; + continue; } newDbo.put(newKey, converter.convertToMongoType(value)); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/QueryMapperUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/QueryMapperUnitTests.java index e432637a6..9e02b0970 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/QueryMapperUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/QueryMapperUnitTests.java @@ -31,6 +31,7 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.MongoDbFactory; +import org.springframework.data.mongodb.core.Person; import org.springframework.data.mongodb.core.QueryMapper; import org.springframework.data.mongodb.core.convert.MappingMongoConverter; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; @@ -172,14 +173,28 @@ public class QueryMapperUnitTests { mapper.getMappedObject(query, null); } + /** + * @see DATAMONGO-369 + */ + @Test + public void handlesAllPropertiesIfDBObject() { + + DBObject query = new BasicDBObject(); + query.put("foo", new BasicDBObject("$in", Arrays.asList(1, 2))); + query.put("bar", new Person()); + + DBObject result = mapper.getMappedObject(query, null); + assertThat(result.get("bar"), is(notNullValue())); + } + class Sample { - + @Id private String foo; } - + class BigIntegerId { - + @Id private BigInteger id; }