spring cassandra data 2.1.4版分页

根据文档:https ://docs.spring.io/spring-data/cassandra/docs/2.1.4.RELEASE/reference/html/#repositories.limit-query-result


Spring cassandra 数据使获取分页信息变得容易。但我无法让它工作。


回购、调用和错误:


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[\"pageable\ "]->org.springframework.data.cassandra.core.query.CassandraPageRequest[\"pagingState\"])","lines":["org.springframework.http.codec.json.AbstractJackson2Encoder.encodeValue(AbstractJackson2Encoder.java :175)","org.springframework.http.codec.json.AbstractJackson2Encoder。lambda$encode$0(AbstractJackson2Encoder.java:122)","reactor.core.publisher.FluxMap$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)","reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)","r


阿晨1998
浏览 187回答 1
1回答

MMTTMM

欢迎来到堆栈溢出。第一个例子是合适的:public interface MyRepository extends ReactiveCassandraRepository<MyClass, String> {&nbsp; @Query("select * from my_keyspace.my_table where solr_query = ?0")&nbsp; Mono<Slice<MyClass>> findMono(String solrQuery, Pageable page);}Mono<Slice<MyClass>>&nbsp; repository.findMono(queryString, CassandraPageRequest.first(20));问题是当您将其传递给 WebFlux(根据堆栈跟踪)时,Jackson 无法对SliceImpl(的实现)进行编码。Slice所以查询产生了正确的结果,但如果你想对它进行 JSON 编码,你需要传递Slice内容,而不是Slice本身。相关说明:ReactiveCassandraRepository不实现ReactiveSortingRepository,因为带有Sort参数的 Casandra 查询始终需要一个WHERE子句。查看ReactiveSortingRepository,您会看到一个findAll(Sort)不采用过滤条件的方法:public interface ReactiveSortingRepository<T, ID> extends ReactiveCrudRepository<T, ID> {&nbsp; &nbsp; Flux<T> findAll(Sort sort);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java