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.update
、delete
还是插入(,如下所示:
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);
}