diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java index cda610064..3d8fef663 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java @@ -50,8 +50,8 @@ public class ReactiveCassandraQueryMethod extends CassandraQueryMethod { super(method, metadata, projectionFactory, mappingContext); - 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-cassandra/src/test/kotlin/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodCoroutineUnitTests.kt b/spring-data-cassandra/src/test/kotlin/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodCoroutineUnitTests.kt index 36882821e..5f118e924 100644 --- a/spring-data-cassandra/src/test/kotlin/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodCoroutineUnitTests.kt +++ b/spring-data-cassandra/src/test/kotlin/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodCoroutineUnitTests.kt @@ -40,6 +40,8 @@ class ReactiveCassandraQueryMethodCoroutineUnitTests { suspend fun findSuspendAllByName(): Flow fun findAllByName(): Flow + + suspend fun findSuspendByName(): List } @Test // DATACASS-771 @@ -59,4 +61,13 @@ class ReactiveCassandraQueryMethodCoroutineUnitTests { assertThat(queryMethod.isCollectionQuery).isTrue() } + + @Test // DATACASS-806 + internal fun `should consider suspended methods returning List as collection queries`() { + + val method = PersonRepository::class.java.getMethod("findSuspendByName", Continuation::class.java) + val queryMethod = ReactiveCassandraQueryMethod(method, DefaultRepositoryMetadata(PersonRepository::class.java), projectionFactory, CassandraMappingContext()) + + assertThat(queryMethod.isCollectionQuery).isTrue() + } }