From 1f4264e6a71fd65817cd89cb845fda0c7094913b Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Fri, 10 Aug 2012 19:58:36 +0200 Subject: [PATCH] DATAMONGO-472 - MongoQueryCreator now correctly translates Not keyword. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We're now translating a negating property reference into a ne(…) call instead of a not().is(…). --- .../mongodb/repository/query/MongoQueryCreator.java | 2 +- .../AbstractPersonRepositoryIntegrationTests.java | 13 ++++++++++++- .../data/mongodb/repository/PersonRepository.java | 7 +++++++ 3 files changed, 20 insertions(+), 2 deletions(-) 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 6bdb4ced4..00c5c9128 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 @@ -228,7 +228,7 @@ class MongoQueryCreator extends AbstractQueryCreator { case SIMPLE_PROPERTY: return criteria.is(parameters.nextConverted(property)); case NEGATING_SIMPLE_PROPERTY: - return criteria.not().is(parameters.nextConverted(property)); + return criteria.ne(parameters.nextConverted(property)); } throw new IllegalArgumentException("Unsupported keyword!"); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java index 7bc53f685..28f643789 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java @@ -495,4 +495,15 @@ public abstract class AbstractPersonRepositoryIntegrationTests { List result = repository.findByCreatedAtLessThanManually(boyd.createdAt); assertThat(result.isEmpty(), is(false)); } -} \ No newline at end of file + + /** + * @see DATAMONGO-472 + */ + @Test + public void findsPeopleUsingNotPredicate() { + + List result = repository.findByLastnameNot("Matthews"); + assertThat(result, not(hasItem(dave))); + assertThat(result, hasSize(5)); + } +} diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java index 66667ca16..e2af969b7 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java @@ -183,4 +183,11 @@ public interface PersonRepository extends MongoRepository, Query */ List findByCreatedAtAfter(Date date); + /** + * @see DATAMONGO-472 + * @param lastname + * @return + */ + List findByLastnameNot(String lastname); + }