findAll() first queries the number of records in a table (to return the total number in a Page) and then queries requested page. If the first query returns 0 (empty table), the second query is pointless as it will always return an empty list. Please see patch: https://github.com/nurkiewicz/spring-data-jpa/commit/dd0a213ecd298d4886659213cf8d78de8ad16919 and pull-request: https://github.com/SpringSource/spring-data-jpa/pull/12.
Actually we might consider even more aggressive optimizations, e.g. if user requests second page with size 10 (records 11-20) but there are only 9 records in the database, querying the database is unnecessary as well.