首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datastax Cassandra Java驱动程序4分页问题

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

Stack Overflow用户
提问于 2020-06-30 13:37:25
回答 1查看 457关注 0票数 1

我需要以分页的方式从cassandra数据库表中获取结果。我使用的是spring引导版本2.3.1,它反过来使用cassandra java驱动程序4。在以前的驱动程序版本中,在分页时,没有问题,驱动程序用来获取与指定页面大小相等的结果,如下所示:

代码语言:javascript
复制
Where select = QueryBuilder.select("column1", "column2", "column3")
    .from("my_table")
    .where(QueryBuilder.eq("column4", "some_value"))
    .and(QueryBuilder.eq("column5", "some_value"));

select.setFetchSize(5);

if (!page.equals("0"))
    select.setPagingState(PagingState.fromString(page));
ResultSet results = cassandraTemplate.getCqlOperations().queryForResultSet(select);
PagingState nextPage = results.getExecutionInfo().getPagingState();
int remaining = results.getAvailableWithoutFetching(); // gives 5 results as specified

在4中,该方法已从setFetchSize(int)更改为setPageSize(int)。但同样的事情在这里不起作用。即使在指定了大小之后,它也会获取所有结果:

代码语言:javascript
复制
SimpleStatement stmt = QueryBuilder.selectFrom("my_keyspace", "my_table")
    .columns(Arrays.asList("column1", "column2", "column3"))
    .where(Relation.column("column4")
             .isEqualTo(QueryBuilder.literal("some_value")),
           Relation.column("column5")
             .isEqualTo(QueryBuilder.literal("some_value))).build();

stmt.setPageSize(5);
if (!page.equals("0"))
    stmt.setPagingState(Bytes.fromHexString(page));

ResultSet results = cassandraTemplate.getCqlOperations().queryForResultSet(stmt);
ByteBuffer nextPage = results.getExecutionInfo().getPagingState();
int remaining = results.getAvailableWithoutFetching(); // gives all the results, even though size is specified as 5

我做错了什么吗?如果我不是,那么该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-30 20:34:47

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

代码语言:javascript
复制
stmt = stmt.setPageSize(5);
if (!page.equals("0"))
    stmt = stmt.setPagingState(Bytes.fromHexString(page));

IOW,每个变异方法都返回一个新实例,因此您需要通过每次重新分配stmt变量来捕获该实例。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62658754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档