如何在Objectify中对答案进行排序?

Ste*_*eve 13 google-app-engine objectify google-cloud-datastore

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

我的域名:


public class InvoiceLineItem
{
    private int units;

    private BigDecimal unitCost;
    private BigDecimal extendedCost;

    private String description;

    @Parent Key<Invoice> invoice;
}
Run Code Online (Sandbox Code Playgroud)

我试图使用以下内容收集与给定发票关联的所有InvoiceLineItem:

ofy ().query (InvoiceLineItem.class).ancestor (invoiceKey).list ( );
Run Code Online (Sandbox Code Playgroud)

在我的测试用例中,这很好用,按预期返回2行.

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

ofy ().query (InvoiceLineItem.class).ancestor (invoiceKey).order ("+description").list ();
Run Code Online (Sandbox Code Playgroud)

我总是得到0结果.我已经尝试改变顺序方向,它的排序字段,查询中order()子句的位置,都没有效果.任何人都能看到我在这里做错的事吗?

谢谢...

sti*_*ure 28

这里有几个潜在的问题:

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

  • 不过有趣的是.我的印象是在Objectify 3.1中所有字段都被编入索引,除非用`@`Unindexed注释.版本4.0将此行为更改为所有字段都是未索引的,除非使用`@`Indexed注释.这个印象我不正确吗? (2认同)
  • 是的,你是对的.在3.1中,默认情况下会为所有字段编制索引.我不确定粘贴的代码是否准确,所以提起索引问题似乎是明智的,这是一个常见的错误.很高兴它现在正在工作! (2认同)