今天我迁移到 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();
如果我的 ArrayList 包含多个条目,则会导致错误
SEVERE: com.netflix.astyanax.connectionpool.exceptions.BadRequestException: BadRequestException: [host=hostname(hostname):9160, latency=5(5), attempts=1]InvalidRequestException(why:there were 1 markers(?) in CQL but 2 bound variables)
我究竟做错了什么?有没有其他方法来处理SQL SELECT...WHERE...IN () - 语句或者我发现了一个错误?
最好的问候克里斯