0

假设我有以下 CQL3 查询:

QueryString = "SELECT id1, id2, link_type, visibility, data, time, version from keyspace.table where id1 = id1 and link_type = link_type and id2 **IN id2s** and time>= minTime and time<= maxTime ORDER BY time desc limit= rowLimit;"
  1. 如果我将其实现为 aStatement = new Statement (QueryString)我会收到此错误(因为 id2s: a List 中的括号):

输入 '[' 没有可行的替代方案(...和 ​​link_type = 123456789 和 [id2] IN...)

--->我应该如何将其转换为List<Long> id2s不带括号但带括号的列表:(item1,item2,item3)

  1. 如果我将查询实现为 PreparedStatement:

PreparedStatement prepared = session.prepare(query);

第一个错误已解决,但我得到另一个:

不能对分区键同时具有 ORDER BY 和 IN 限制的查询进行分页;您必须删除 ORDER BY 或 IN 并对客户端进行排序,或者禁用此查询的分页

---->我应该如何使用准备好的语句关闭分页(我发现只有简单语句的解决方案:statement.setfetchSize()但没有准备好的解决方案)

如果我使用简单的语句,我会遇到括号/括号的问题,如果我使用准备好的语句来解决最后一个问题,我会遇到分页问题。

任何想法 ?

4

1 回答 1

0

在 Java 中,您可以通过以下代码关闭 cassandra 分页

Statement statement = new SimpleStatement(query);
statement.setFetchSize(Integer.MAX_VALUE);

并执行语句。

session.execute(statement);

它应该可以正常工作

于 2016-12-22T09:38:24.297 回答