Cassandra 带VALUES()的Astyanax parepared语句工作不正常
今天我迁移到Astyanax 1.56.42并发现,准备语句上的withValues()似乎无法与SQL SELECT…WHERE…IN()正常工作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
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最近对它的行为进行了审查,如中所述。新版本一出我就试用。