从 Where com.datastax.driver.core.querybuilder.Select.Where 中


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

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

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

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

简而言之,Where 不是不可变的,它所属的语句也不是不可变的,因此您不会每次调用它时都会获得一个新副本,而是获得 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);
}

最新更新