Согласно документации: https://docs.spring.io/spring-data/cassandra/docs/2.1.4.RELEASE/reference/html/#repositories.limit-query-result
Данные весны Кассандры позволили легко получить информацию о нумерации страниц.Но я не могу заставить это работать.
Репо, Звонок и Ошибки:
1.Реактивный звонок
Репо :
public interface MyRepository extends ReactiveCassandraRepository<MyClass, String> {
@Query("select * from my_keyspace.my_table where solr_query = ?0")
Mono<Slice<MyClass>> findMono(String solrQuery, Pageable page);
}
Вызов:
Mono<Slice<MyClass>> repository.findMono(queryString, CassandraPageRequest.first(20));
Ошибка:
"exceptionDescription": "org.springframework.core.codec.CodecException: ошибка определения типа: [простой тип, класс com.datastax.driver.core.PagingState]; вложенное исключение равноcom.fasterxml.jackson.databind.exc.InvalidDefinitionException: не найден сериализатор для класса com.datastax.driver.core.PagingState и не обнаружено никаких свойств для создания BeanSerializer (во избежание исключения отключите SerializationFeature.FAIL_ON_EMPTY_BEANS) (через цепочку ссылок: org.springframework.data.domain.SliceImpl [\ "выгружаемая \"] -> org.springframework.data.cassandra.core.query.CassandraPageRequest [\ "pagingState \"]) " "линия": [" org.springframework.http.codec.json.AbstractJackson2Encoder.encodeValue (AbstractJackson2Encoder.java:175) " "org.springframework.http.codec.json.AbstractJackson2Encoder.lambda $ закодировать $ 0 (AbstractJackson2Encoder.java:122)"," reactor.core.publisher.FluxMaр $ MapSubscriber.onNext (FluxMap.java:100) " "reactor.core.publisher.FluxSwitchIfEmpty $ SwitchIfEmptySubscriber.onNext (FluxSwitchIfEmpty.java:67)"," reactor.core.publisher.FluxMap $ MapSubscriber.onNext (FluxMap.Java: 114) " "reactor.core.publisher.FluxDefaultIfEmpty $ DefaultIfEmptySubscriber.onNext (FluxDefaultIfEmpty.java:92)", "reactor.core.publisher.Operators $ MonoSubscriber.complete (Operators.java:1476)"," реактор.core.publisher.MonoFlatMap $ FlatMapInner.onNext (MonoFlatMap.java:241) " "reactor.core.publisher.FluxMapFuseable $ MapFuseableSubscriber.onNext (FluxMapFuseable.java:121)"," reactor.core.publisher.Operators $ MonoSubscriber.complete (Operators.java:1476) " "reactor.core.publisher.MonoCollectList $ MonoBufferAllSubscriber.onComplete (MonoCollectList.java:118)"," reactor.core.publisher.FluxTake $ TakeFuseableSubscriber.onComplete (FluxTake.java:424) " "reactor.core.publisher.FluxTake $ TakeFuseableSubscriber.onNext (FluxTake.java:404)"," reactor.core.publisher.FluxIterable $ IterableSubscription.fastPath (FluxIterable.java:311)","reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:198)"],
2.Реактивен с ReactiveSortingRepository
Репо:
public interface LocationRepository extends ReactiveSortingRepository<MyClass, String> {
}
Вызов:
repository.findAll(CassandraPageRequest.first(20))
Ошибка:
Синтаксическая ошибка: findAll не может быть применено к CassandraPageRequest.
3.Простой вызов, чтобы получить страницу.
Репо:
public interface MyRepository extends CassandraRepository<MyClass, MyClassKey> {
Page<MyClass> findByKeyTerminalIdAndSolrQuery(String solrQuery, Pageable page);
}
Ошибка при запуске:
Вызывается: org.springframework.dao.InvalidDataAccessApiUsageException: запросы страницы не поддерживаются.Используйте запрос Slice.
4.Использование PagingAndSortingRepository
Репо:
public interface MyRepository extends PagingAndSortingRepository<MyClass, MyClassKey> {
}
Вызов:
Page<Vessel> vessels = repository.findAll(CassandraPageRequest.first(10));
Ошибка:
springframework.data.mapping.PropertyReferenceException: не найдено свойство findAll для типа MyClass!