使用JDO查询时,我在结果集中返回了额外的空对象。
查询应返回25行。我已经通过直接在数据库控制台中运行它来验证这一点。我跑的时候:
List<MyClass> result = (List<MyClass>)query.execute();
我使用.size()
验证大小为25。我遇到的问题是,在迭代结果时,.hasNext()
检查在过去的25行中继续。即使我正在使用.next()
来增加它。
当我去调试它时,我在hasNext()
和next()
上添加了断点。正如您在链接的screencapture中看到的,结果的大小为25,但ArrayList中有33个对象!扩展该节点会显示所有预期结果,最后会显示8个空条目。我甚至清空了除了25行之外的所有表格,它仍然返回了33个对象。
我假设这必须是我的迭代器继续进行的原因并且我最终得到了NullPointerException。
Debug Screencapture&lt; - 抱歉没有足够的代表发布内联
谷歌搜索没有发现任何特定的...我唯一想知道的是,如果有一些问题重建对象,最后有剩余的东西。它是类中唯一的原语和枚举,它们位于默认的提取组中。
我感谢您的建议。
编辑:已添加代码
tx.begin();
Query q = pm.newQuery("SELECT FROM " + Permission.class.getName() +
" WHERE userId == " + this.userId);
List<Permission> result = (List<Permission>)q.execute();
if (!(result.isEmpty()))
{
//System.out.println(result.size());
Iterator<Permission> iter = result.iterator();
while (iter.hasNext()) // Exception throws from here after 25th
{
Permission p = iter.next();
System.out.println(p.getPermissionId());
}
}
tx.commit();
控制台显示以下内容:
25 <--// result.size();
1150
1151
1152
...
1173
1174 <--// 25th row
Exception in thread "main" java.lang.NullPointerException <--//(iter.hasNext())