diff --git a/pom.xml b/pom.xml
index dfb64f9ba3..306c5eadaf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.10.0.BUILD-SNAPSHOT
+ 1.10.0.DATAMONGO-1406-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml
index ae0a5d6c8f..f6234d32b5 100644
--- a/spring-data-mongodb-cross-store/pom.xml
+++ b/spring-data-mongodb-cross-store/pom.xml
@@ -6,7 +6,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.10.0.BUILD-SNAPSHOT
+ 1.10.0.DATAMONGO-1406-SNAPSHOT
../pom.xml
@@ -48,7 +48,7 @@
org.springframework.data
spring-data-mongodb
- 1.10.0.BUILD-SNAPSHOT
+ 1.10.0.DATAMONGO-1406-SNAPSHOT
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index 2d02722262..fc15609dba 100644
--- a/spring-data-mongodb-distribution/pom.xml
+++ b/spring-data-mongodb-distribution/pom.xml
@@ -13,7 +13,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.10.0.BUILD-SNAPSHOT
+ 1.10.0.DATAMONGO-1406-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml
index ee5e3336db..f51f9859a5 100644
--- a/spring-data-mongodb-log4j/pom.xml
+++ b/spring-data-mongodb-log4j/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.10.0.BUILD-SNAPSHOT
+ 1.10.0.DATAMONGO-1406-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 8072d3f665..636139ddc3 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -11,7 +11,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.10.0.BUILD-SNAPSHOT
+ 1.10.0.DATAMONGO-1406-SNAPSHOT
../pom.xml
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 f439254475..d80423446b 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
@@ -58,6 +58,7 @@
* @author Patryk Wasik
* @author Thomas Darimont
* @author Christoph Strobl
+ * @author Mark Paluch
*/
public class QueryMapper {
@@ -66,7 +67,7 @@ public class QueryMapper {
static final ClassTypeInformation> NESTED_DOCUMENT = ClassTypeInformation.from(NestedDocument.class);
private enum MetaMapping {
- FORCE, WHEN_PRESENT, IGNORE;
+ FORCE, WHEN_PRESENT, IGNORE
}
private final ConversionService conversionService;
@@ -316,7 +317,7 @@ protected Object getMappedValue(Field documentField, Object value) {
}
if (isNestedKeyword(value)) {
- return getMappedKeyword(new Keyword((DBObject) value), null);
+ return getMappedKeyword(new Keyword((DBObject) value), documentField.getPropertyEntity());
}
if (isAssociationConversionNecessary(documentField, value)) {
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 bc6b8272ac..585ed114bd 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
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2015 the original author or authors.
+ * Copyright 2011-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -35,6 +35,7 @@
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
+
import org.springframework.data.annotation.Id;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
@@ -54,6 +55,7 @@
import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.test.util.BasicDbListBuilder;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
@@ -68,6 +70,7 @@
* @author Patryk Wasik
* @author Thomas Darimont
* @author Christoph Strobl
+ * @author Mark Paluch
*/
@RunWith(MockitoJUnitRunner.class)
public class QueryMapperUnitTests {
@@ -595,6 +598,28 @@ public void classInformationShouldNotBePresentInDBObjectUsedInFinderMethods() {
assertThat(dbo.toString(), equalTo("{ \"embedded\" : { \"$in\" : [ { \"_id\" : \"1\"} , { \"_id\" : \"2\"}]}}"));
}
+ /**
+ * @see DATAMONGO-1406
+ */
+ @Test
+ public void shouldMapQueryForNestedCustomizedPropertiesUsingConfiguredFieldNames() {
+
+ EmbeddedClass embeddedClass = new EmbeddedClass();
+ embeddedClass.customizedField = "hello";
+
+ Foo foo = new Foo();
+ foo.listOfItems = Arrays.asList(embeddedClass);
+
+ Query query = new Query(Criteria.where("listOfItems") //
+ .elemMatch(new Criteria(). //
+ andOperator(Criteria.where("customizedField").is(embeddedClass.customizedField))));
+
+ DBObject dbo = mapper.getMappedObject(query.getQueryObject(), context.getPersistentEntity(Foo.class));
+
+ assertThat(dbo, isBsonObject().containing("my_items.$elemMatch.$and",
+ new BasicDbListBuilder().add(new BasicDBObject("fancy_custom_name", embeddedClass.customizedField)).get()));
+ }
+
/**
* @see DATAMONGO-647
*/
@@ -792,8 +817,7 @@ public void intersectsShouldUseGeoJsonRepresentationCorrectly() {
}
/**
- * <<<<<<< HEAD
- *
+ *
* @see DATAMONGO-1269
*/
@Test
@@ -859,10 +883,15 @@ public void exampleShouldBeMappedCorrectlyWhenContainingLegacyPoint() {
public class Foo {
@Id private ObjectId id;
EmbeddedClass embedded;
+
+ @Field("my_items")
+ List listOfItems;
}
public class EmbeddedClass {
public String id;
+
+ @Field("fancy_custom_name") public String customizedField;
}
class IdWrapper {