Spring boot Datastax Cassandra Java驱动程序4分页问题

Spring boot Datastax Cassandra Java驱动程序4分页问题,spring-boot,datastax-java-driver,Spring Boot,Datastax Java Driver,我需要以分页方式从cassandra数据库表中获取结果。我使用的是SpringBootVersion2.3.1,它使用的是CassandraJavaDriver4。在以前的驱动程序版本中,分页时没有问题,驱动程序用于获取等于指定页面大小的结果,如下所示: 其中select=QueryBuilder.selectcolumn1、column2、column3 .从我的桌子 .where querybuilder.eqcolumn4,某些值 .和querybuilder.eqcolumn5,一些值;

我需要以分页方式从cassandra数据库表中获取结果。我使用的是SpringBootVersion2.3.1,它使用的是CassandraJavaDriver4。在以前的驱动程序版本中,分页时没有问题,驱动程序用于获取等于指定页面大小的结果,如下所示:

其中select=QueryBuilder.selectcolumn1、column2、column3 .从我的桌子 .where querybuilder.eqcolumn4,某些值 .和querybuilder.eqcolumn5,一些值; 选择.setFetchSize5; 如果page.equals0 选择.setPagingStatePagingState.fromStringpage; 结果集结果=cassandraTemplate.getCqlOperations.queryForResultSetselect; PagingState下一页=results.getExecutionInfo.getPagingState; int remaining=results.getAvailableWithoutFetching;//按规定给出5个结果 在Java驱动程序版本4中,方法已从setFetchSizeint更改为setPageSizeint。但同样的事情在这里不起作用。即使指定了大小,它也会获取所有结果:

SimpleStatement stmt=QueryBuilder.selectFrommy\u键空间,my\u表 .ColumnSarray.asListcolumn1、column2、column3 第四栏 .isEqualToQueryBuilder.literalsome_值, 关系.第5栏 .isEqualToQueryBuilder.literalsome_value.build; stmt.setPageSize5; 如果page.equals0 stmt.setPagingStateBytes.fromHexStringpage; 结果集结果=cassandraTemplate.getCqlOperations.queryForResultSetstmt; ByteBuffer nextPage=results.getExecutionInfo.getPagingState; int remaining=results.getAvailableWithoutFetching;//给出所有结果,即使大小指定为5
我做错什么了吗?如果我不是,那么这个问题的解决方案应该是什么?

驱动程序4中的语句是不可变的。您需要更改以下行:

stmt = stmt.setPageSize(5);
if (!page.equals("0"))
    stmt = stmt.setPagingState(Bytes.fromHexString(page));
每个变异方法都会返回一个新实例,因此您需要通过每次重新分配stmt变量来捕获该实例