JDO查询在结果中返回额外的空对象

时间:2012-02-23 04:55:57

标签: java orm jdo h2 datanucleus

使用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())

0 个答案:

没有答案