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 083b778d7..315ac7a80 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 @@ -200,7 +200,7 @@ class MongoQueryCreator extends AbstractQueryCreator { case CONTAINING: return createContainingCriteria(part, property, criteria, parameters); case NOT_CONTAINING: - return createContainingCriteria(part, property, criteria, parameters).not(); + return createContainingCriteria(part, property, criteria.not(), parameters); case REGEX: return criteria.regex(parameters.next().toString()); case EXISTS: 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 b924d8188..277172f12 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 @@ -1261,4 +1261,15 @@ public abstract class AbstractPersonRepositoryIntegrationTests { assertThat(result.size(), is(2)); } + /** + * @see DATAMONGO-1425 + */ + @Test + public void findsPersonsByFirstnameNotContains() throws Exception { + + List result = repository.findByFirstnameNotContains("Boyd"); + assertThat(result.size(), is((int) (repository.count() - 1))); + assertThat(result, not(hasItem(boyd))); + } + } 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 eae2c02e1..00a91b4e4 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 @@ -89,6 +89,8 @@ public interface PersonRepository extends MongoRepository, Query */ List findByFirstnameLike(String firstname); + List findByFirstnameNotContains(String firstname); + List findByFirstnameLikeOrderByLastnameAsc(String firstname, Sort sort); @Query("{'age' : { '$lt' : ?0 } }") @@ -309,7 +311,8 @@ public interface PersonRepository extends MongoRepository, Query * @see DATAMONGO-745 */ @Query("{lastname:?0, address.street:{$in:?1}}") - Page findByCustomQueryLastnameAndAddressStreetInList(String lastname, List streetNames, Pageable page); + Page findByCustomQueryLastnameAndAddressStreetInList(String lastname, List streetNames, + Pageable page); /** * @see DATAMONGO-950 @@ -334,19 +337,19 @@ public interface PersonRepository extends MongoRepository, Query */ @Query("{ firstname : { $in : ?0 }}") Stream findByCustomQueryWithStreamingCursorByFirstnames(List firstnames); - + /** * @see DATAMONGO-990 */ @Query("{ firstname : ?#{[0]}}") List findWithSpelByFirstnameForSpELExpressionWithParameterIndexOnly(String firstname); - + /** * @see DATAMONGO-990 */ @Query("{ firstname : ?#{[0]}, email: ?#{principal.email} }") List findWithSpelByFirstnameAndCurrentUserWithCustomQuery(String firstname); - + /** * @see DATAMONGO-990 */ 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 9780f32be..2fe220b73 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 @@ -454,6 +454,7 @@ public class MongoQueryCreatorUnitTests { /** * @see DATAMONGO-1075 + * @see DATAMONGO-1425 */ @Test public void shouldCreateRegexWhenUsingNotContainsOnStringProperty() { @@ -462,7 +463,7 @@ public class MongoQueryCreatorUnitTests { MongoQueryCreator creator = new MongoQueryCreator(tree, getAccessor(converter, "thew"), context); Query query = creator.createQuery(); - assertThat(query, is(query(where("username").regex(".*thew.*").not()))); + assertThat(query.getQueryObject(), is(query(where("username").not().regex(".*thew.*")).getQueryObject())); } /**