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 d1d2b6f05..608ad0b6d 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 @@ -788,4 +788,42 @@ public abstract class AbstractPersonRepositoryIntegrationTests { assertThat(result.getContent(), hasSize(1)); } + + /** + * @see DATAMONGO-745 + */ + @Test + public void findByCustomQueryFirstnamesInListAndLastname() { + + repository.save(new Person("foo", "bar")); + repository.save(new Person("bar", "bar")); + repository.save(new Person("fuu", "bar")); + repository.save(new Person("notfound", "bar")); + + Page result = repository.findByCustomQueryFirstnamesAndLastname(Arrays.asList("bar", "foo", "fuu"), "bar", + new PageRequest(0, 2)); + + assertThat(result.getContent(), hasSize(2)); + assertThat(result.getTotalPages(), is(2)); + assertThat(result.getTotalElements(), is(3L)); + } + + /** + * @see DATAMONGO-745 + */ + @Test + public void findByCustomQueryLastnameAndStreetInList() { + + repository.save(new Person("foo", "bar").withAddress(new Address("street1", "1", "SB"))); + repository.save(new Person("bar", "bar").withAddress(new Address("street2", "1", "SB"))); + repository.save(new Person("fuu", "bar").withAddress(new Address("street1", "2", "RGB"))); + repository.save(new Person("notfound", "notfound")); + + Page result = repository.findByCustomQueryLastnameAndAddressStreetInList("bar", + Arrays.asList("street1", "street2"), new PageRequest(0, 2)); + + assertThat(result.getContent(), hasSize(2)); + assertThat(result.getTotalPages(), is(2)); + assertThat(result.getTotalElements(), is(3L)); + } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/Person.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/Person.java index 799720f30..9345d5108 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/Person.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/Person.java @@ -261,6 +261,12 @@ public class Person extends Contact { return this.getId().equals(that.getId()); } + public Person withAddress(Address address) { + + this.address = address; + return this; + } + /* * (non-Javadoc) * 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 72ba9b351..722e798a4 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 @@ -262,4 +262,16 @@ public interface PersonRepository extends MongoRepository, Query * @see DATAMONGO-893 */ Page findByAddressIn(List
address, Pageable page); + + /** + * @see DATAMONGO-745 + */ + @Query("{firstname:{$in:?0}, lastname:?1}") + Page findByCustomQueryFirstnamesAndLastname(List firstnames, String lastname, Pageable page); + + /** + * @see DATAMONGO-745 + */ + @Query("{lastname:?0, address.street:{$in:?1}}") + Page findByCustomQueryLastnameAndAddressStreetInList(String lastname, List streetNames, Pageable page); }