为什么QueryResultIterator#getCursor()在GAE / J中返回null

时间:2012-09-20 06:04:16

标签: java google-app-engine objectify

getCursor()javadoc说:

  

返回:一个Cursor;如果无法恢复此查询结果,则返回null

“恢复”这个词在上下文中意味着什么?

我的代码如下:

        com.googlecode.objectify.cmd.Query q = createQuery();
        QueryResultIterator<T> itr = q.iterator();
        while( itr.hasNext() )
        {
            list.add( itr.next() );
        } 
        ... 
       String newCursorValue = itr.getCursor().toWebSafeString();

它抛出NPE只是因为itr.getCursor()是emtpy。这种方法很长一段时间都运行良好,但是当我修改查询条件(但它有效)时,今天失败了。但我不明白为什么查询条件会影响getCursor()方法。

有人请说清楚吗? 顺便说一下,我使用GAE / J v1.7.1,Objectify 4a3。

1 个答案:

答案 0 :(得分:8)

您应该阅读limitations of cursors。这基本上定义了什么时候可以“恢复”查询。