diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index baba4e9c1..27d5bed4f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -2243,6 +2243,44 @@ public class MongoTemplateTests { assertThat(template.findOne(q, VersionedPerson.class), nullValue()); } + /** + * @see DATAMONGO-773 + */ + @Test + public void testShouldSupportQueryWithIncludedDbRefField() { + + Sample sample = new Sample("47111", "foo"); + template.save(sample); + + DocumentWithDBRefCollection doc = new DocumentWithDBRefCollection(); + doc.id = "4711"; + doc.dbRefProperty = sample; + + template.save(doc); + + Query qry = query(where("id").is(doc.id)); + qry.fields().include("dbRefProperty"); + + List result = template.find(qry, DocumentWithDBRefCollection.class); + + assertThat(result, is(notNullValue())); + assertThat(result, hasSize(1)); + assertThat(result.get(0), is(notNullValue())); + assertThat(result.get(0).dbRefProperty, is(notNullValue())); + assertThat(result.get(0).dbRefProperty.field, is(sample.field)); + } + + static class DocumentWithDBRefCollection { + + @Id public String id; + + @org.springframework.data.mongodb.core.mapping.DBRef// + public List dbRefAnnotatedList; + + @org.springframework.data.mongodb.core.mapping.DBRef// + public Sample dbRefProperty; + } + static class DocumentWithCollection { @Id public String id; @@ -2288,6 +2326,13 @@ public class MongoTemplateTests { @Id String id; String field; + + public Sample() {} + + public Sample(String id, String field) { + this.id = id; + this.field = field; + } } static class TestClass { 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 799278d5c..68ed896a0 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 @@ -501,6 +501,21 @@ public class QueryMapperUnitTests { assertThat(idValuesAfter, is(idValuesBefore)); } + /** + * @see DATAMONGO-773 + */ + @Test + public void queryMapperShouldBeAbleToProcessQueriesThatIncludeDbRefFields() { + + BasicMongoPersistentEntity persistentEntity = context.getPersistentEntity(WithDBRef.class); + + Query qry = query(where("someString").is("abc")); + qry.fields().include("reference"); + + DBObject mappedFields = mapper.getMappedObject(qry.getFieldsObject(), persistentEntity); + assertThat(mappedFields, is(notNullValue())); + } + class IdWrapper { Object id; }