ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 10.4.1.1\. 迭代式获取结果(Iterating results) 某些情况下,你可以使用`iterate()`方法得到更好的性能。 这通常是你预期返回的结果在session,或二级缓存(second-level cache)中已经存在时的情况。 如若不然,`iterate()`会比`list()`慢,而且可能简单查询也需要进行多次数据库访问: `iterate()`会首先使用_1_条语句得到所有对象的持久化标识(identifiers),再根据持久化标识执行_n_条附加的select语句实例化实际的对象。 ``` // fetch ids Iterator iter = sess.createQuery("from eg.Qux q order by q.likeliness").iterate(); while ( iter.hasNext() ) { Qux qux = (Qux) iter.next(); // fetch the object // something we couldnt express in the query if ( qux.calculateComplicatedAlgorithm() ) { // delete the current instance iter.remove(); // dont need to process the rest break; } } ```