如何在 Objectify 中对响应进行排序?

Posted

技术标签:

【中文标题】如何在 Objectify 中对响应进行排序?【英文标题】:How to sort responses in Objectify? 【发布时间】:2012-05-16 05:30:46 【问题描述】:

我目前正在使用 Objectify 3.1 构建一个用于部署到 GAE 的应用程序。尝试使用 order() 子句进行查询时,我得到了奇怪的结果。

我的域名:


public class InvoiceLineItem

    private int units;

    private BigDecimal unitCost;
    private BigDecimal extendedCost;

    private String description;

    @Parent Key<Invoice> invoice;

我正在尝试使用以下方法收集与给定 Invoice 关联的所有 InvoiceLineItem:

ofy ().query (InvoiceLineItem.class).ancestor (invoiceKey).list ( );

在我的测试用例中,这工作得很好,按预期返回 2 行。

但是,当我尝试向上述查询添加排序顺序时,如下所示:

ofy ().query (InvoiceLineItem.class).ancestor (invoiceKey).order ("+description").list ();

我总是得到 0 个结果。我已经尝试更改订单方向,其排序依据的字段,查询中 order() 子句的位置,都没有效果。谁能看到我在这里做错了什么?

谢谢...

【问题讨论】:

【参考方案1】:

这里有几个潜在的问题:

描述字段必须被索引 描述字段必须少于 500 个字符,因为超过 500 个字符会转换为不可索引的 Text 去掉+。它是 .order("description") 或 .order("-description")。

【讨论】:

原来是'+'。我以为我读过你可以使用“+”表示升序或“-”表示降序。似乎只有减号是必要的。感谢您的提示。 一个有趣的旁白,不过。我的印象是,在 Objectify 3.1 中,所有字段都被索引,除非用 @Unindexed 注释。 4.0 版将此行为更改为所有字段均未编入索引,除非使用 @Indexed 注释。我对这个印象有误吗? 是的 - 你是对的。在 3.1 中,默认情况下所有字段都被索引。我不确定粘贴的代码是否准确,因此提及索引问题似乎是明智之举,这是一个常见错误。很高兴它现在可以工作了!

以上是关于如何在 Objectify 中对响应进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中对列表进行排序 [重复]

如何在C#中对列表进行排序[重复]

如何在 firebaserecyclerAdapter 中对我的产品(项目)进行排序

如何在Java中对HashMap进行排序[重复]

如何在 Flex 中对 ArrayCollection 进行排序

如何在角度 4 材料排序中对日期/时间列进行排序?