Java Cassandra将令牌转换为long

Java Cassandra将令牌转换为long,java,cassandra,datastax-java-driver,Java,Cassandra,Datastax Java Driver,我想在表上运行这样的查询: SELECT count(*) FROM mytable WHERE token(_id) >= -9220405531215751472 AND token(_id) < -9215701564955960000 AND state=true ALLOW FILTERING; 我发现我可以转换它!它必须显式地转换为murruil3token并调用getValue方法 long start,end; String sql; for(TokenRange

我想在表上运行这样的查询:

SELECT count(*) FROM mytable WHERE token(_id) >= -9220405531215751472 AND token(_id) < -9215701564955960000 AND state=true ALLOW FILTERING;

我发现我可以转换它!它必须显式地转换为
murruil3token
并调用
getValue
方法

long start,end;
String sql;

for(TokenRange range : tokenMap.getTokenRanges()) {
    start = ((Murmur3Token) range.getStart()).getValue();
    end = ((Murmur3Token) range.getEnd()).getValue();
    sql = "SELECT count(*) FROM mytable WHERE token(_id) >= "+start+" AND token(_id) < "+end+" AND state=true ALLOW FILTERING;";
    System.out.println(i +":" + sql);
}
long start,end;
字符串sql;
for(TokenRange范围:tokenMap.getTokenRanges()){
开始=((杂音3token)range.getStart()).getValue();
end=((杂音3token)range.getEnd()).getValue();
sql=“从mytable中选择计数(*),其中标记(_id)>=“+start+”和标记(_id)<“+end+”且状态=true允许筛选;”;
System.out.println(i+“:”+sql);
}

下面是一个示例,它正在做您想做的事情,但是正确:-您的代码没有处理令牌范围重叠,因此您将丢失一些数据您可以在我的答案中搜索-我描述了它应该如何工作,请在此处对URL进行注释!我没有找到。
long start,end;
String sql;

for(TokenRange range : tokenMap.getTokenRanges()) {
    start = ((Murmur3Token) range.getStart()).getValue();
    end = ((Murmur3Token) range.getEnd()).getValue();
    sql = "SELECT count(*) FROM mytable WHERE token(_id) >= "+start+" AND token(_id) < "+end+" AND state=true ALLOW FILTERING;";
    System.out.println(i +":" + sql);
}