diff --git a/src/main/java/org/springframework/data/domain/PageImpl.java b/src/main/java/org/springframework/data/domain/PageImpl.java index 0851795b1..513248d74 100644 --- a/src/main/java/org/springframework/data/domain/PageImpl.java +++ b/src/main/java/org/springframework/data/domain/PageImpl.java @@ -84,7 +84,7 @@ public class PageImpl implements Page, Serializable { * @see org.springframework.data.domain.Page#getTotalPages() */ public int getTotalPages() { - return getSize() == 0 ? 0 : (int) Math.ceil((double) total / (double) getSize()); + return getSize() == 0 ? 1 : (int) Math.ceil((double) total / (double) getSize()); } /* @@ -124,7 +124,7 @@ public class PageImpl implements Page, Serializable { * @see org.springframework.data.domain.Page#hasNextPage() */ public boolean hasNextPage() { - return (getNumber() + 1) * getSize() < total; + return getNumber() + 1 < getTotalPages(); } /* diff --git a/src/test/java/org/springframework/data/domain/PageImplUnitTests.java b/src/test/java/org/springframework/data/domain/PageImplUnitTests.java index 59ee0189c..220d8065c 100644 --- a/src/test/java/org/springframework/data/domain/PageImplUnitTests.java +++ b/src/test/java/org/springframework/data/domain/PageImplUnitTests.java @@ -106,11 +106,24 @@ public class PageImplUnitTests { assertThat(page.getSize(), is(0)); assertThat(page.getSort(), is((Sort) null)); assertThat(page.getTotalElements(), is(0L)); - assertThat(page.getTotalPages(), is(0)); + assertThat(page.getTotalPages(), is(1)); assertThat(page.hasNextPage(), is(false)); assertThat(page.hasPreviousPage(), is(false)); assertThat(page.isFirstPage(), is(true)); assertThat(page.isLastPage(), is(true)); assertThat(page.hasContent(), is(false)); } + + /** + * @see DATACMNS-323 + */ + @Test + public void returnsCorrectTotalPages() { + + Page page = new PageImpl(Arrays.asList("a")); + + assertThat(page.getTotalPages(), is(1)); + assertThat(page.hasNextPage(), is(false)); + assertThat(page.hasPreviousPage(), is(false)); + } }