使用排序的对象游标失败SDK1.9.3 / 1.9.4

时间:2014-05-13 02:48:35

标签: google-app-engine objectify

使用Objectify 4.0b3 / 5.02升级到GAE SDK 1.9.3 / 4时出现问题

当我使用排序过滤器执行查询并重用光标时,它正在抛出

"IllegalArgumentException?: Cursor does not match query"

代码在

之下
QueryResultIterator<FollowJoin> results = ofy().load().type(FollowJoin.class).
filter("followerKey", PositionUser.key(1)).
    order("sortIndexFollowing").
    limit(1).
    startAt(cursor).
    iterator();
    cursor = results.getCursor();

返回的光标与从本机DS查询返回的光标奇怪地不同。

>>>Position {
  IndexValue {
    property: "sortIndexFollowing"
    value <

    >
  }
  key <
    app: "test"
    path <
      Element {
        type: "FollowJoin"
        name: "USER_10-USER_1"
      }
    >
  >
  start_inclusive: false
}

Objectify游标缺少排序字段

>>>Position {
  key <
    app: "test"
    path <
      Element {
        type: "FollowJoin"
        name: "USER_10-USER_1"
      }
    >
  >
  start_inclusive: false
}

这个确切的代码适用于SDK 1.9.2。

但GAE SDK 1.9.3,1.9.4失败。

显然我的查询是使用订单参数,但光标不包含订单字段。

它似乎仅限于开发环境,并且不会出现在生产环境中。 这导致了对开发测试的问题。

导致行为改变的原因是什么?

感谢

-lp

1 个答案:

答案 0 :(得分:1)

此问题不是由Objectify引起的。我在不使用Objectify的项目中遇到了完全相同的问题。

错误是由App Engine SDK中的更改引起的。

我建议回滚到1.9.2。直到有更新。

编辑:发布错误报告(https://code.google.com/p/googleappengine/issues/detail?id=10943