如何在 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 中对响应进行排序?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 firebaserecyclerAdapter 中对我的产品(项目)进行排序