diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java index ac36d0de7..f3e37d0a4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicQuery.java @@ -28,6 +28,7 @@ import com.mongodb.util.JSON; * @author Oliver Gierke * @author Christoph Strobl * @author Thomas Darimont + * @author John Willemin */ public class BasicQuery extends Query { @@ -70,7 +71,11 @@ public class BasicQuery extends Query { @Override public DBObject getFieldsObject() { - return fieldsObject; + if(fieldsObject != null) { + return fieldsObject; + } else { + return super.getFieldsObject(); + } } @Override diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java index 1890267c3..5c69e9851 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/BasicQueryUnitTests.java @@ -32,6 +32,7 @@ import com.mongodb.DBObject; * * @author Oliver Gierke * @author Thomas Darimont + * @author John Willemin */ public class BasicQueryUnitTests { @@ -137,4 +138,21 @@ public class BasicQueryUnitTests { assertThat(query1, is(not(equalTo(query2)))); assertThat(query1.hashCode(), is(not(query2.hashCode()))); } + + /** + * @see DATAMONGO-1387 + */ + @Test + public void handlesFieldsIncludeCorrectly() { + + String qry = "{ \"name\" : \"Thomas\"}"; + + BasicQuery query1 = new BasicQuery(qry); + query1.fields().include("name"); + + DBObject fieldsObject = query1.getFieldsObject(); + fieldsObject.containsField("name"); + assertThat(query1.getFieldsObject(), notNullValue()); + assertThat(query1.getFieldsObject().containsField("name"), is(true)); + } }