【问题标题】:How to sort responses in Objectify?如何在 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() 子句的位置,都没有效果。谁能看到我在这里做错了什么?

谢谢...

【问题讨论】:

    标签: google-app-engine google-cloud-datastore objectify


    【解决方案1】:

    这里有几个潜在的问题:

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

    【讨论】:

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