Cassandra 带VALUES()的Astyanax parepared语句工作不正常

Cassandra 带VALUES()的Astyanax parepared语句工作不正常,cassandra,astyanax,Cassandra,Astyanax,今天我迁移到Astyanax 1.56.42并发现,准备语句上的withValues()似乎无法与SQL SELECT…WHERE…IN()正常工作 ArrayList<ByteBuffer> uids = new ArrayList<ByteBuffer>(fileUids.size()); for (int i = 0; i < fileUids.size(); i++) { uids.add(ByteBuffer.wrap(UUIDtoByteArra

今天我迁移到Astyanax 1.56.42并发现,准备语句上的withValues()似乎无法与SQL SELECT…WHERE…IN()正常工作

ArrayList<ByteBuffer> uids = new ArrayList<ByteBuffer>(fileUids.size());
for (int i = 0; i < fileUids.size(); i++) {
    uids.add(ByteBuffer.wrap(UUIDtoByteArray(fileUids.get(i)), 0, 16));
}

result = KEYSPACE.prepareQuery(CF_FILESYSTEM)
    .withCql("SELECT * from files where file_uid in (?);")
    .asPreparedStatement()
    .withValues(uids)
    .execute();
我做错了什么?是否有其他方法来处理()中的SQL SELECT…WHERE…语句或我是否发现了错误

致意
Chris

如您所述,因为您正在向单个
提供集合(ArrayList)?
Astyanax引发异常。我认为您需要为
IN
子句中要包含的每个元素添加

假设要在名为ArrayListBj的ArrayList中存储2个整数,则where子句的语句如下所示:

SELECT & FROM users WHERE somevalue IN (arrayListObj);
因为您正在提供一个集合,所以这无法工作,因此您将需要多个
。也就是说,你想要:

SELECT name, occupation FROM users WHERE userid IN (arrayListObj.get(0), arrayListObj.get(1));

我在上找不到任何关于在子句中使用带有准备语句的
的内容。

如您所述,因为您向单个
提供了一个集合(ArrayList)?
Astyanax引发了一个异常。我认为您需要为
IN
子句中要包含的每个元素添加

假设要在名为ArrayListBj的ArrayList中存储2个整数,则where子句的语句如下所示:

SELECT & FROM users WHERE somevalue IN (arrayListObj);
因为您正在提供一个集合,所以这无法工作,因此您将需要多个
。也就是说,你想要:

SELECT name, occupation FROM users WHERE userid IN (arrayListObj.get(0), arrayListObj.get(1));

我在网上找不到任何关于在
子句中使用的语句。

我就是这样做的。但我认为这是一个解决办法。也许Netflix最近对它的行为进行了审查,如中所述。新版本一发布我就试用。我就是这么做的。但我认为这是一个解决办法。也许Netflix最近对它的行为进行了审查,如中所述。新版本一出我就试用。