从where com.datastax.driver.core.querybuilder.Select.Where中删除以前添加的和()子句

时间:2015-02-03 16:40:40

标签: cassandra cql

for (int i=0; i<mycolumns.length; i++)
{
   where.and(QueryBuilder.eq(COLNAME, mycolumns[i]));
   //how to remove the above and() call 
}

在循环的每次迭代中,我想执行查询,然后在下一循环迭代中替换该值。

1 个答案:

答案 0 :(得分:2)

我并不完全清楚你想要完成什么。我猜你正在尝试更新共享主键的多行,一次更新1行?

不幸的是,这是不可能的,因为当您调用where.and时,您正在向Where对象添加数据,并且它将返回对同一Where对象的引用。

简而言之,Where不是不可变的,也不是它所属的Statement,因此每次调用它时都不会获得新的副本,而是获得Where对象的更新版本

您可以做的是在循环中再次生成您的语句(无论是QueryBuilder.updatedelete还是插入):

for (int i=0; i<mycolumns.length; i++) {
    Statement stmt = QueryBuilder.update("tableName").where(eq("key", 1)).and(QueryBuilder.eq(COLNAME, mycolumns[i]));
    session.execute(stmt);
}