diff --git a/pom.xml b/pom.xml
index 01115a9d8c..ebc3efaaf6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-2138-remove-Page-results-SNAPSHOT
pom
Spring Data Relational Parent
diff --git a/spring-data-jdbc-distribution/pom.xml b/spring-data-jdbc-distribution/pom.xml
index b3c39e64c3..98e4b8c150 100644
--- a/spring-data-jdbc-distribution/pom.xml
+++ b/spring-data-jdbc-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-2138-remove-Page-results-SNAPSHOT
../pom.xml
diff --git a/spring-data-jdbc/pom.xml b/spring-data-jdbc/pom.xml
index 9fc8266b9e..95184d944e 100644
--- a/spring-data-jdbc/pom.xml
+++ b/spring-data-jdbc/pom.xml
@@ -6,7 +6,7 @@
4.0.0
spring-data-jdbc
- 4.0.0-SNAPSHOT
+ 4.0.0-2138-remove-Page-results-SNAPSHOT
Spring Data JDBC
Spring Data module for JDBC repositories.
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-2138-remove-Page-results-SNAPSHOT
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateOperations.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateOperations.java
index 52113f867e..c30429694f 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateOperations.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateOperations.java
@@ -230,7 +230,9 @@ public interface JdbcAggregateOperations {
* @param pageable the pagination information. Must not be {@code null}.
* @return Guaranteed to be not {@code null}.
* @since 2.0
+ * @deprecated use a combination of other methods of this class to construct results of type {@link Page}.
*/
+ @Deprecated(since = "4.0")
Page findAll(Class domainType, Pageable pageable);
/**
@@ -275,7 +277,9 @@ public interface JdbcAggregateOperations {
* @param pageable can be null.
* @return a {@link Page} of entities matching the given {@link Example}.
* @since 3.0
+ * @deprecated use a combination of other methods of this class to construct results of type {@link Page}.
*/
+ @Deprecated(since = "4.0")
Page findAll(Query query, Class domainType, Pageable pageable);
/**
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateTemplate.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateTemplate.java
index a744208cfa..ad078f1ebc 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateTemplate.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/JdbcAggregateTemplate.java
@@ -359,6 +359,7 @@ public Stream streamAll(Class domainType, Sort sort) {
return allStreamable.map(this::triggerAfterConvert);
}
+ @Deprecated
@Override
public Page findAll(Class domainType, Pageable pageable) {
@@ -388,6 +389,7 @@ public Stream streamAll(Query query, Class domainType) {
return accessStrategy.streamAll(query, domainType).map(this::triggerAfterConvert);
}
+ @Deprecated
@Override
public Page findAll(Query query, Class domainType, Pageable pageable) {
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/FetchableFluentQueryByExample.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/FetchableFluentQueryByExample.java
index 7b12af8193..f56bc38fd2 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/FetchableFluentQueryByExample.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/FetchableFluentQueryByExample.java
@@ -35,6 +35,7 @@
import org.springframework.data.projection.ProjectionFactory;
import org.springframework.data.relational.core.query.Query;
import org.springframework.data.relational.repository.query.RelationalExampleMapper;
+import org.springframework.data.support.PageableExecutionUtils;
import org.springframework.util.Assert;
/**
@@ -126,8 +127,15 @@ public Window scroll(ScrollPosition scrollPosition) {
@Override
public Page page(Pageable pageable) {
- return this.entityOperations.findAll(createQuery(p -> p.with(pageable)), getExampleType(), pageable)
- .map(item -> this.getConversionFunction().apply(item));
+ Query contentQuery = createQuery(p -> p.with(pageable));
+ List content = this.entityOperations.findAll(contentQuery, getExampleType());
+
+ List result = new ArrayList<>(content.size());
+ for (S s : content) {
+ result.add(getConversionFunction().apply(s));
+ }
+
+ return PageableExecutionUtils.getPage(result, pageable, () -> this.entityOperations.count(createQuery(), getExampleType()));
}
@Override
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepository.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepository.java
index 585755541d..a76e2621f8 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepository.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/SimpleJdbcRepository.java
@@ -27,11 +27,14 @@
import org.springframework.data.jdbc.core.convert.JdbcConverter;
import org.springframework.data.mapping.PersistentEntity;
import org.springframework.data.projection.SpelAwareProxyProjectionFactory;
+import org.springframework.data.relational.core.query.CriteriaDefinition;
+import org.springframework.data.relational.core.query.Query;
import org.springframework.data.relational.repository.query.RelationalExampleMapper;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.FluentQuery;
import org.springframework.data.repository.query.QueryByExampleExecutor;
+import org.springframework.data.support.PageableExecutionUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
@@ -139,7 +142,16 @@ public List findAll(Sort sort) {
@Override
public Page findAll(Pageable pageable) {
- return entityOperations.findAll(entity.getType(), pageable);
+
+ Assert.notNull(pageable, "Pageable must not be null");
+
+ Query query1 = Query.query(CriteriaDefinition.empty());
+
+
+ Query query = query1.with(pageable);
+ List content = entityOperations.findAll(query, entity.getType());
+
+ return PageableExecutionUtils.getPage(content, pageable, () -> entityOperations.count(entity.getType()));
}
@Override
@@ -172,9 +184,17 @@ public List findAll(Example example, Sort sort) {
public Page findAll(Example example, Pageable pageable) {
Assert.notNull(example, "Example must not be null");
+ Assert.notNull(pageable, "Pageable must not be null");
- return this.entityOperations.findAll(this.exampleMapper.getMappedExample(example), example.getProbeType(),
- pageable);
+ Query mappedQuery = this.exampleMapper.getMappedExample(example);
+
+
+ Query contentQuery = mappedQuery.with(pageable);
+
+ List content = this.entityOperations.findAll(contentQuery, example.getProbeType());
+
+ return PageableExecutionUtils.getPage(content, pageable,
+ () -> this.entityOperations.count(mappedQuery, example.getProbeType()));
}
@Override
@@ -203,4 +223,5 @@ public R findBy(Example example, Function JdbcAggregateOperations.findAll(sort: Sort): List JdbcAggregateOperations.findAll(pageable: Pageable): Page =
findAll(T::class.java, pageable)
diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java
index c5b82f0be1..7dd18feb83 100644
--- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java
+++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java
@@ -119,6 +119,7 @@ public class JdbcRepositoryIntegrationTests {
public static Stream findAllByExamplePageableSource() {
+ // Pageable pageRequest, int size, int totalPages, List notContains
return Stream.of( //
Arguments.of(PageRequest.of(0, 3), 3, 34, Arrays.asList("3", "4", "100")), //
Arguments.of(PageRequest.of(1, 10), 10, 10, Arrays.asList("9", "20", "30")), //
@@ -126,7 +127,8 @@ public static Stream findAllByExamplePageableSource() {
Arguments.of(PageRequest.of(33, 3), 1, 34, Collections.emptyList()), //
Arguments.of(PageRequest.of(36, 3), 0, 34, Collections.emptyList()), //
Arguments.of(PageRequest.of(0, 10000), 100, 1, Collections.emptyList()), //
- Arguments.of(PageRequest.of(100, 10000), 0, 1, Collections.emptyList()) //
+ Arguments.of(PageRequest.of(100, 10000), 0, 1, Collections.emptyList()), //
+ Arguments.of(Pageable.unpaged(), 100, 1, Collections.emptyList()) //
);
}
diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/SimpleJdbcRepositoryEventsUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/SimpleJdbcRepositoryEventsUnitTests.java
index 827d4559a8..5ab44d735b 100644
--- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/SimpleJdbcRepositoryEventsUnitTests.java
+++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/SimpleJdbcRepositoryEventsUnitTests.java
@@ -51,6 +51,7 @@
import org.springframework.data.relational.core.mapping.event.Identifier;
import org.springframework.data.relational.core.mapping.event.RelationalEvent;
import org.springframework.data.relational.core.mapping.event.WithId;
+import org.springframework.data.relational.core.query.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.jdbc.core.JdbcOperations;
@@ -264,7 +265,7 @@ void publishesEventsOnFindAllPaged() {
DummyEntity entity1 = new DummyEntity(42L);
DummyEntity entity2 = new DummyEntity(23L);
- doReturn(asList(entity1, entity2)).when(dataAccessStrategy).findAll(any(), any(Pageable.class));
+ doReturn(asList(entity1, entity2)).when(dataAccessStrategy).findAll(any(Query.class), any(Class.class));
doReturn(2L).when(dataAccessStrategy).count(any());
repository.findAll(PageRequest.of(0, 20));
diff --git a/spring-data-r2dbc/pom.xml b/spring-data-r2dbc/pom.xml
index 7cb5f7a108..3441c25582 100644
--- a/spring-data-r2dbc/pom.xml
+++ b/spring-data-r2dbc/pom.xml
@@ -6,7 +6,7 @@
4.0.0
spring-data-r2dbc
- 4.0.0-SNAPSHOT
+ 4.0.0-2138-remove-Page-results-SNAPSHOT
Spring Data R2DBC
Spring Data module for R2DBC
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-2138-remove-Page-results-SNAPSHOT
diff --git a/spring-data-relational/pom.xml b/spring-data-relational/pom.xml
index 6fc709727e..7ddb7b307e 100644
--- a/spring-data-relational/pom.xml
+++ b/spring-data-relational/pom.xml
@@ -6,7 +6,7 @@
4.0.0
spring-data-relational
- 4.0.0-SNAPSHOT
+ 4.0.0-2138-remove-Page-results-SNAPSHOT
Spring Data Relational
Spring Data Relational support
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-relational-parent
- 4.0.0-SNAPSHOT
+ 4.0.0-2138-remove-Page-results-SNAPSHOT