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

Mik*_*ike 2 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();
Run Code Online (Sandbox Code Playgroud)

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

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

Pet*_*ego 8

您应该阅读有关游标的限制.这基本上定义了何时可以"恢复"查询.

  • 谢谢Peter,我只是清楚我的问题 - 文档说:"因为NOT_EQUAL和IN运算符是用多个查询实现的,使用它们的查询不支持游标,也不支持使用CompositeFilterOperator.or方法构造的复合查询." (3认同)