diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java index 97fc3d55d..4659653bf 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java @@ -94,8 +94,8 @@ public class ReactiveMongoQueryMethod extends MongoQueryMethod { } this.method = method; - this.isCollectionQuery = Lazy.of(() -> !(isPageQuery() || isSliceQuery()) - && ReactiveWrappers.isMultiValueType(metadata.getReturnType(method).getType())); + this.isCollectionQuery = Lazy.of(() -> (!(isPageQuery() || isSliceQuery()) + && ReactiveWrappers.isMultiValueType(metadata.getReturnType(method).getType()) || super.isCollectionQuery())); } /* diff --git a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethodCoroutineUnitTests.kt b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethodCoroutineUnitTests.kt index ea77b86e9..04d3ce99d 100644 --- a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethodCoroutineUnitTests.kt +++ b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethodCoroutineUnitTests.kt @@ -39,6 +39,8 @@ class ReactiveMongoQueryMethodCoroutineUnitTests { suspend fun findSuspendAllByName(): Flow fun findAllByName(): Flow + + suspend fun findSuspendByName(): List } @Test // DATAMONGO-2562 @@ -58,4 +60,13 @@ class ReactiveMongoQueryMethodCoroutineUnitTests { assertThat(queryMethod.isCollectionQuery).isTrue() } + + @Test // DATAMONGO-2630 + internal fun `should consider suspended methods returning List as collection queries`() { + + val method = PersonRepository::class.java.getMethod("findSuspendByName", Continuation::class.java) + val queryMethod = ReactiveMongoQueryMethod(method, DefaultRepositoryMetadata(PersonRepository::class.java), projectionFactory, MongoMappingContext()) + + assertThat(queryMethod.isCollectionQuery).isTrue() + } }