gpt4 book ai didi

java - iterator.next() 返回替代对象

转载 作者:行者123 更新时间:2023-11-30 06:09:12 25 4
gpt4 key购买 nike

我正在尝试在迭代器内执行update HQL查询以获取java中的多个记录。但是当我执行时,它通过跳过下一条记录来仅更新备用记录。如果我只在日志中打印迭代器对象,而不执行更新查询,它将打印所有对象。那么当我在迭代器内执行update时,为什么它接下来会跳过对象?

我的代码:

List<Integer> id = (List<Integer>) myList.list();//I've to update query for each id

for(Iterator < Integer > iter = id.iterator();iter.hasNext();){
System.out.println("id: "+(Integer) iter.next());
int ids = (Integer) iter.next();
Query query =session.createQuery("update MyTable set url =? where id=?);
query.setParameter(0,url);
query.setParameter(1,ids);
query.executeUpdate();
}

如果我在 myList 中有 4 个元素,它只会通过skipint 1st 和 3rd 更新第 2 个和第 4 个元素。

最佳答案

如果您需要在同一循环迭代中多次访问同一迭代器元素,则不应多次调用 iter.next(),因为每次调用都会使迭代器前进。相反,调用 iter.next() 一次并将结果存储在变量中:

for(Iterator<Integer> iter = id.iterator(); iter.hasNext();) {
Integer currentID = iter.next();
System.out.println("id: "+ currentID);
Query query = session.createQuery("update MyTable set url =? where id=?);
query.setParameter(0,url);
query.setParameter(1,currentID);
query.executeUpdate();
}

关于java - iterator.next() 返回替代对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38366271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com