DATAMONGO-469 - Fixed parsing of And keyword in derived queries.
This commit is contained in:
@@ -120,11 +120,9 @@ class MongoQueryCreator extends AbstractQueryCreator<Query, Criteria> {
|
||||
PersistentPropertyPath<MongoPersistentProperty> 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<Query, Criteria> {
|
||||
|
||||
return source.replaceAll("\\*", ".*");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Person, Long> {
|
||||
|
||||
Reference in New Issue
Block a user