为了账号安全,请及时绑定邮箱和手机立即绑定

spring cassandra data 2.1.4版分页

spring cassandra data 2.1.4版分页

阿晨1998 2022-06-30 11:50:28
根据文档:https ://docs.spring.io/spring-data/cassandra/docs/2.1.4.RELEASE/reference/html/#repositories.limit-query-resultSpring 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
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

欢迎来到堆栈溢出。


第一个例子是合适的:


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));

问题是当您将其传递给 WebFlux(根据堆栈跟踪)时,Jackson 无法对SliceImpl(的实现)进行编码。Slice所以查询产生了正确的结果,但如果你想对它进行 JSON 编码,你需要传递Slice内容,而不是Slice本身。


相关说明:ReactiveCassandraRepository不实现ReactiveSortingRepository,因为带有Sort参数的 Casandra 查询始终需要一个WHERE子句。查看ReactiveSortingRepository,您会看到一个findAll(Sort)不采用过滤条件的方法:


public interface ReactiveSortingRepository<T, ID> extends ReactiveCrudRepository<T, ID> {

    Flux<T> findAll(Sort sort);

}


查看完整回答
反对 回复 2022-06-30
  • 1 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号