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 e902c3859..757822de8 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 @@ -880,4 +880,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 b386d654e..11dd6abf4 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 4f37497f1..3cde5acf8 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 @@ -290,4 +290,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); }