diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractMongoQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractMongoQuery.java index ce7406cc2..a51f9a0c1 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractMongoQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractMongoQuery.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2010-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -85,7 +85,7 @@ public abstract class AbstractMongoQuery implements RepositoryQuery { } else if (method.isGeoNearQuery()) { return new GeoNearExecution(accessor).execute(query); } else if (method.isCollectionQuery()) { - return new CollectionExecution().execute(query); + return new CollectionExecution(accessor.getPageable()).execute(query); } else if (method.isPageQuery()) { return new PagedExecution(accessor.getPageable()).execute(query); } else { @@ -133,12 +133,23 @@ public abstract class AbstractMongoQuery implements RepositoryQuery { */ class CollectionExecution extends Execution { + private final Pageable pageable; + + CollectionExecution(Pageable pageable) { + this.pageable = pageable; + } + /* * (non-Javadoc) * @see org.springframework.data.mongodb.repository.query.AbstractMongoQuery.Execution#execute(org.springframework.data.mongodb.core.query.Query) */ @Override public Object execute(Query query) { + + if (pageable != null) { + query = applyPagination(query, pageable); + } + return readCollection(query); } } 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 aba8c4145..97a46f6e6 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 @@ -310,6 +310,16 @@ public abstract class AbstractPersonRepositoryIntegrationTests { assertThat(females.get(0), is(alicia)); } + /** + * @see DATAMONGO-446 + */ + @Test + public void findsPeopleBySexPaginated() { + + List males = repository.findBySex(Sex.MALE, new PageRequest(0, 2)); + assertThat(males.size(), is(2)); + } + @Test public void findsPeopleByNamedQuery() { List result = repository.findByNamedQuery("Dave"); 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 3b217f593..8c9d84f78 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2010-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -147,6 +147,8 @@ public interface PersonRepository extends MongoRepository, Query List findBySex(Sex sex); + List findBySex(Sex sex, Pageable pageable); + List findByNamedQuery(String firstname); GeoResults findByLocationNear(Point point, Distance maxDistance);