diff --git a/src/main/java/org/springframework/data/repository/util/QueryExecutionConverters.java b/src/main/java/org/springframework/data/repository/util/QueryExecutionConverters.java index d812f6fe6..88943462b 100644 --- a/src/main/java/org/springframework/data/repository/util/QueryExecutionConverters.java +++ b/src/main/java/org/springframework/data/repository/util/QueryExecutionConverters.java @@ -100,6 +100,7 @@ public abstract class QueryExecutionConverters { ALLOWED_PAGEABLE_TYPES.add(Slice.class); ALLOWED_PAGEABLE_TYPES.add(Page.class); ALLOWED_PAGEABLE_TYPES.add(List.class); + ALLOWED_PAGEABLE_TYPES.add(Streamable.class); ALLOWED_PAGEABLE_TYPES.add(Window.class); ALLOWED_PAGEABLE_TYPES.add(SearchResults.class); diff --git a/src/test/java/org/springframework/data/repository/query/QueryMethodUnitTests.java b/src/test/java/org/springframework/data/repository/query/QueryMethodUnitTests.java index ac9d92371..8f951c07e 100755 --- a/src/test/java/org/springframework/data/repository/query/QueryMethodUnitTests.java +++ b/src/test/java/org/springframework/data/repository/query/QueryMethodUnitTests.java @@ -206,6 +206,16 @@ class QueryMethodUnitTests { assertThat(new QueryMethod(method, repositoryMetadata, factory, DefaultParameters::new).isStreamQuery()).isTrue(); } + @Test // GH-3397 + void doesNotRejectStreamableForPagination() throws Exception { + + RepositoryMetadata repositoryMetadata = new DefaultRepositoryMetadata(SampleRepository.class); + var method = SampleRepository.class.getMethod("streamable", Pageable.class); + + assertThat(new QueryMethod(method, repositoryMetadata, factory, DefaultParameters::new).isCollectionQuery()) + .isTrue(); + } + @Test // DATACMNS-716 void doesNotRejectCompletableFutureQueryForSingleEntity() throws Exception { @@ -445,6 +455,8 @@ class QueryMethodUnitTests { Stream streaming(Pageable pageable); + Streamable streamable(Pageable pageable); + // DATACMNS-716 CompletableFuture returnsCompletableFutureForSingleEntity();