for (int i=0; i<mycolumns.length; i++)
{
where.and(QueryBuilder.eq(COLNAME, mycolumns[i]));
//how to remove the above and() call
}
在循环的每次迭代中,我想执行查询,然后在下一循环迭代中替换该值。
答案 0 :(得分:2)
我并不完全清楚你想要完成什么。我猜你正在尝试更新共享主键的多行,一次更新1行?
不幸的是,这是不可能的,因为当您调用where.and
时,您正在向Where
对象添加数据,并且它将返回对同一Where对象的引用。
简而言之,Where
不是不可变的,也不是它所属的Statement,因此每次调用它时都不会获得新的副本,而是获得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);
}