Java 语句上的Cassandra.setFetchSize()不受支持
我想在UI上实现分页,所以我设置fetchSize如下:Java 语句上的Cassandra.setFetchSize()不受支持,java,cassandra,datastax-java-driver,Java,Cassandra,Datastax Java Driver,我想在UI上实现分页,所以我设置fetchSize如下: boundStatement.setFetchSize(20) 但是setFetchSize()不受尊重。到目前为止,我的表有400行,所有400行都被检索到。当我使用检索下一组行时 rs.getExecutionInfo().getPagingState(); 然后检索接下来的380行。因此分页状态是正确设置和检索的,但为什么驱动程序要从表中检索所有400行,如何避免这种情况或使其仅检索400行 代码部分: .... .... /
boundStatement.setFetchSize(20)
但是setFetchSize()不受尊重。到目前为止,我的表有400行,所有400行都被检索到。当我使用检索下一组行时
rs.getExecutionInfo().getPagingState();
然后检索接下来的380行。因此分页状态是正确设置和检索的,但为什么驱动程序要从表中检索所有400行,如何避免这种情况或使其仅检索400行
代码部分:
....
....
// "SELECT * FROM abc.sometable"
BoundStatement boundStatement = pStmt.bind();
boundStatement.setFetchSize(20);
if (pagingState != null) {
boundStatement.setPagingState(PagingState.fromString(pagingState));
}
ResultSet rs = session.execute(boundStatement);
PagingState nextPage = rs.getExecutionInfo().getPagingState();
int remaining = rs.getAvailableWithoutFetching();
List<?> list = new ArrayList<>();
for (Row row : rs) {
list.add(getValidObjectFromRow(row));
}
....
。。。。
....
//“从abc.sometable中选择*”
BoundStatement BoundStatement=pStmt.bind();
boundStatement.setFetchSize(20);
如果(分页状态!=null){
boundStatement.setPagingState(PagingState.fromString(PagingState));
}
ResultSet rs=session.execute(boundStatement);
PagingState nextPage=rs.getExecutionInfo().getPagingState();
int remaining=rs.getAvailableWithoutFetching();
列表=新的ArrayList();
用于(行:rs){
添加(getValidObjectFromRow(row));
}
....
Cassandra版本-3.7和Cassandra驱动程序版本-3.1.0
谢谢
setFetchSize
控制页面大小,但不控制ResultSet
中返回的最大行数
for(行:rs){
添加(getValidObjectFromRow(row));
}
在上面的示例代码中,它将迭代前20行,当它到达当前结果的末尾时,它将获取更多,直到没有更多的行与查询匹配
如果要限制返回的行数,有几个选项
限制X
(其中X是所需的行数)添加到查询的末尾while(rs.getAvailableWithoutFetching()>0){
添加(getValidObjectFromRow(rs.one());
}
这将从
ResultSet
读取,直到页面中不再有行,此时它将停止迭代。您如何使用ResultSet?很可能驱动程序正在翻页封面下的下20行(等等)。如果你使用wireshark,你可以查看查询/结果,看看它是否实际获取了20个数据块。您可能只想在查询中添加LIMIT 20
,如果需要更多控制更新问题的代码块,请手动翻页。您使用的是什么版本的cassandra?我使用的是cassandra版本-3.7和cassandra驱动程序版本-3.1.0谢谢您的回答。我回去再次阅读了java驱动程序文档,您的回答赋予了它们新的含义!LOL:)