diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java index e2653516f..aba06489e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java @@ -120,11 +120,9 @@ class MongoQueryCreator extends AbstractQueryCreator { PersistentPropertyPath path = context.getPersistentPropertyPath(part.getProperty()); MongoPersistentProperty property = path.getLeafProperty(); - Criteria criteria = from(part.getType(), property, - where(path.toDotPath(MongoPersistentProperty.PropertyToFieldNameConverter.INSTANCE)), + return from(part.getType(), property, + base.and(path.toDotPath(MongoPersistentProperty.PropertyToFieldNameConverter.INSTANCE)), (PotentiallyConvertingIterator) iterator); - - return criteria.andOperator(criteria); } /* @@ -290,4 +288,4 @@ class MongoQueryCreator extends AbstractQueryCreator { return source.replaceAll("\\*", ".*"); } -} \ No newline at end of file +} diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryCreatorUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryCreatorUnitTests.java index 705261066..88d0fe3de 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryCreatorUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryCreatorUnitTests.java @@ -84,12 +84,22 @@ public class MongoQueryCreatorUnitTests { PartTree tree = new PartTree("findByFirstName", Person.class); MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, "Oliver"), context); + Query query = creator.createQuery(); + assertThat(query, is(query(where("firstName").is("Oliver")))); + } - creator.createQuery(); + /** + * @see DATAMONGO-469 + */ + @Test + public void createsAndQueryCorrectly() { - creator = new MongoQueryCreator(new PartTree("findByFirstNameAndFriend", Person.class), getAccessor(converter, - "Oliver", new Person()), context); - creator.createQuery(); + Person person = new Person(); + MongoQueryCreator creator = new MongoQueryCreator(new PartTree("findByFirstNameAndFriend", Person.class), + getAccessor(converter, "Oliver", person), context); + Query query = creator.createQuery(); + + assertThat(query, is(query(where("firstName").is("Oliver").and("friend").is(person)))); } @Test @@ -98,7 +108,7 @@ public class MongoQueryCreatorUnitTests { PartTree tree = new PartTree("findByFirstNameNotNull", Person.class); Query query = new MongoQueryCreator(tree, getAccessor(converter), context).createQuery(); - assertThat(query.getQueryObject(), is(new Query(Criteria.where("firstName").ne(null)).getQueryObject())); + assertThat(query, is(new Query(Criteria.where("firstName").ne(null)))); } @Test @@ -107,7 +117,7 @@ public class MongoQueryCreatorUnitTests { PartTree tree = new PartTree("findByFirstNameIsNull", Person.class); Query query = new MongoQueryCreator(tree, getAccessor(converter), context).createQuery(); - assertThat(query.getQueryObject(), is(new Query(Criteria.where("firstName").is(null)).getQueryObject())); + assertThat(query, is(new Query(Criteria.where("firstName").is(null)))); } @Test @@ -139,7 +149,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, 18), context); Query reference = query(where("age").lte(18)); - assertThat(creator.createQuery().getQueryObject(), is(reference.getQueryObject())); + assertThat(creator.createQuery(), is(reference)); } @Test @@ -149,7 +159,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, 18), context); Query reference = query(where("age").gte(18)); - assertThat(creator.createQuery().getQueryObject(), is(reference.getQueryObject())); + assertThat(creator.createQuery(), is(reference)); } /** @@ -162,7 +172,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(partTree, getAccessor(converter, "Oliver"), context); Query reference = query(where("foo").is("Oliver")); - assertThat(creator.createQuery().getQueryObject(), is(reference.getQueryObject())); + assertThat(creator.createQuery(), is(reference)); } /** @@ -174,7 +184,7 @@ public class MongoQueryCreatorUnitTests { PartTree tree = new PartTree("findByAgeExists", Person.class); MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, true), context); Query query = query(where("age").exists(true)); - assertThat(creator.createQuery().getQueryObject(), is(query.getQueryObject())); + assertThat(creator.createQuery(), is(query)); } /** @@ -186,7 +196,7 @@ public class MongoQueryCreatorUnitTests { PartTree tree = new PartTree("findByFirstNameRegex", Person.class); MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, ".*"), context); Query query = query(where("firstName").regex(".*")); - assertThat(creator.createQuery().getQueryObject(), is(query.getQueryObject())); + assertThat(creator.createQuery(), is(query)); } /** @@ -198,7 +208,7 @@ public class MongoQueryCreatorUnitTests { PartTree tree = new PartTree("findByActiveTrue", Person.class); MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter), context); Query query = query(where("active").is(true)); - assertThat(creator.createQuery().getQueryObject(), is(query.getQueryObject())); + assertThat(creator.createQuery(), is(query)); } /** @@ -210,7 +220,7 @@ public class MongoQueryCreatorUnitTests { PartTree tree = new PartTree("findByActiveFalse", Person.class); MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter), context); Query query = query(where("active").is(false)); - assertThat(creator.createQuery().getQueryObject(), is(query.getQueryObject())); + assertThat(creator.createQuery(), is(query)); } /** @@ -223,8 +233,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, "Dave", 42), context); Query query = creator.createQuery(); - assertThat(query.getQueryObject(), - is(query(new Criteria().orOperator(where("firstName").is("Dave"), where("age").is(42))).getQueryObject())); + assertThat(query, is(query(new Criteria().orOperator(where("firstName").is("Dave"), where("age").is(42))))); } /** @@ -241,7 +250,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, user), context); Query query = creator.createQuery(); - assertThat(query.getQueryObject(), is(query(where("creator").is(dbref)).getQueryObject())); + assertThat(query, is(query(where("creator").is(dbref)))); } /** @@ -254,7 +263,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, "Matt"), context); Query query = creator.createQuery(); - assertThat(query.getQueryObject(), is(query(where("foo").regex("Matt.*")).getQueryObject())); + assertThat(query, is(query(where("foo").regex("Matt.*")))); } /** @@ -267,7 +276,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, "ews"), context); Query query = creator.createQuery(); - assertThat(query.getQueryObject(), is(query(where("foo").regex(".*ews")).getQueryObject())); + assertThat(query, is(query(where("foo").regex(".*ews")))); } /** @@ -280,7 +289,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, "thew"), context); Query query = creator.createQuery(); - assertThat(query.getQueryObject(), is(query(where("foo").regex(".*thew.*")).getQueryObject())); + assertThat(query, is(query(where("foo").regex(".*thew.*")))); } private void assertBindsDistanceToQuery(Point point, Distance distance, Query reference) throws Exception { @@ -298,7 +307,7 @@ public class MongoQueryCreatorUnitTests { Query query = new MongoQueryCreator(tree, new ConvertingParameterAccessor(converter, accessor), context) .createQuery(); - assertThat(query.getQueryObject(), is(query.getQueryObject())); + assertThat(query, is(query)); } interface PersonRepository extends Repository {