Cassandra:在Java

时间:2016-08-07 14:00:06

标签: java cassandra-3.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. 如果我将其实现为Statement = new Statement (QueryString)我会收到此错误(因为id2s中的括号:列表):
  2.   输入'['(...和link_type = 123456789和...)没有可行的选择   [id2] IN ...)

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

    1. 如果我将查询实现为PreparedStatement:
    2. PreparedStatement prepared = session.prepare(query);

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

        

      无法对ORDER BY和IN限制进行页面查询   分区键;你必须删除ORDER BY或IN并排序   客户端,或禁用此查询的分页

      ----&GT;我应该如何使用Prepared语句关闭分页(我只找到了带有简单语句的解决方案:statement.setfetchSize(),但没有使用Prepared Solution)

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

      有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

执行声明。

session.execute(statement);

它应该可以正常工作