Cassandra Prepared Statement - 绑定参数两次

Cassandra Prepared Statement - Binding Parameters Twice

我有一个要执行的 cql 查询。 cql 字符串如下所示:

SELECT * FROM :columnFamilyName WHERE <some_column_name> = :name AND <some_id> = :id;

我的应用程序在 datastax 驱动程序之上有两层抽象。在一层中我想绑定前两个参数,在另一层中我想绑定最后一个参数。 问题是,如果我绑定前两个参数,我会得到一个无法绑定另一个参数的 BoundStatement。我错过了什么吗?可以吗?

我们使用的是 datastax 驱动程序版本 2.0.3。

谢谢, 阿纳托利.

您应该能够使用 boundStatement.setXXXX(index,value) 将任意数量的参数绑定到 BoundStatement,如下所示:

BoundStatement statement = new BoundStatement(query);
statement.setString(0, "value");
statement.setInt(1, 1);
statement.setDate(2, new Date());
ResultSet results = session.execute(statement);

但问题是您正在尝试使用动态列族,其值随您要绑定的值而变化。 据我所知,这是不允许的,因此您应该为每个 table 准备一个语句,然后使用正确的绑定语句。