【问题标题】:Objectify SimpleQuery.endAt() - where exactly does it start from?Objectify SimpleQuery.endAt() - 它究竟从哪里开始?
【发布时间】:2014-10-04 20:51:51
【问题描述】:

Objectify 的 SimpleQuery.endAt() 的确切语义是什么?文档说它“在指定的光标处结束查询结果”(https://code.google.com/p/objectify-appengine/source/browse/src/main/java/com/googlecode/objectify/cmd/SimpleQuery.java?r=a7402d1a9308fbb7b9fd6cb687e43be091d1bcb0#73),可以用两种方式解释。

假设光标指向结果 C,我将查询限制设置为 X。endAt() 会返回 [C-X, C] 或 [0, min(X,C)] 范围内的结果吗?也就是说,是从光标的X结果开始,一直在光标处结束,还是一直从头开始?

编辑: 文档让我认为它会是前者,但我在实践中观察到的是后者的行为。这意味着要正确实现搜索结果的分页,必须跟踪所有游标,而不仅仅是两个最近的游标。这很好,但我认为文档应该更明确一点。

【问题讨论】:

    标签: objectify


    【解决方案1】:

    Objectify 的endAt() 只是将光标传递给低级API 的FetchOptions.endCursor()limit() 只是将值传递给FetchOptions.limit()。该交互由 Google 定义,似乎没有记录在案。我能找到的最相关的位是:

    https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/FetchOptions#endCursor(com.google.appengine.api.datastore.Cursor)

    https://cloud.google.com/appengine/docs/java/datastore/queries#Java_Query_cursors

    我会在 appengine google group 上提问,或者可能重新发布另一个 stackoverflow 问题,将问题概括为 GAE(放弃 Objectify 和 Java 特定的性质)。幸运的是,有人知道 - 可能在 GAE/Python 社区,它比 GAE/Java 社区更大。

    【讨论】:

      猜你喜欢
      • 2017-08-27
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2022-01-26
      • 2021-06-22
      • 2012-06-29
      • 2017-08-14
      • 2018-03-01
      相关资源
      最近更新 更多