Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 如何创建datastax java驱动程序的BoudStatement的深度副本?_Cassandra_Datastax Java Driver - Fatal编程技术网

Cassandra 如何创建datastax java驱动程序的BoudStatement的深度副本?

Cassandra 如何创建datastax java驱动程序的BoudStatement的深度副本?,cassandra,datastax-java-driver,Cassandra,Datastax Java Driver,有没有一种方法可以只绑定准备好的语句中的几个命名变量,创建一个部分绑定语句,然后再从中创建多个绑定语句,例如从列表中填充剩余的命名变量 p = session.prepare("select a from b where c=? AND d=?") bound = p.bind("c", 1) l.map(v => bound.bind("d", l)) 在上面的最后一条语句中,我希望每次都克隆“绑定”,这样我就可以在executeAsync中使用所有绑定语句 只需使用预定义值创建准备

有没有一种方法可以只绑定准备好的语句中的几个命名变量,创建一个部分绑定语句,然后再从中创建多个绑定语句,例如从列表中填充剩余的命名变量

p = session.prepare("select a from b where c=? AND d=?")
bound = p.bind("c", 1)

l.map(v => bound.bind("d", l))

在上面的最后一条语句中,我希望每次都克隆“绑定”,这样我就可以在executeAsync中使用所有绑定语句

只需使用预定义值创建准备好的语句:

p = session.prepare("select a from b where c=1 AND d=?")
l.map(v => bound.bind("d", l))
如果在编译时不知道值c,请动态创建语句字符串:

c=1
p = session.prepare("select a from b where c=" + c + " AND d=?")
l.map(v => bound.bind("d", l))

我认为反复绑定一个值并没有什么大问题。这是比克隆绑定语句更清晰的解决方案。

为什么不将准备好的语句和绑定语句保持为执行异步呢。这就是驱动程序的使用方式。绑定语句不是线程安全的。当前,如果我想使用executeAsync,看起来我必须从准备好的语句中获取新的绑定语句。如果我这样做,l.mapv=>bound.bindd,l和executeAsync,然后l1.mapv=>bound.bindd,l第一批准备好的语句可以将l2中的值作为d。我的目标是找到一种方法来克隆已经部分绑定的语句。另外,保留prepared语句也很好,我只是不想每次绑定5个相同的值。在我的例子中,当我在这部分代码中时,prepared语句中只有1个变量是不同的。谢谢,但我不知道编译时或编写代码时的值“1”。它是动态的。我只是想一次又一次地避免写不必要的文章。从函数的角度来看,它类似于部分函数。