Как сортировать ответы в Objectify?

В настоящее время я создаю приложение для развертывания в GAE, используя Objectify 3.1. Я получаю странные результаты при попытке выполнить запрос с предложением order().

Мой домен:


public class InvoiceLineItem
{
    private int units;

    private BigDecimal unitCost;
    private BigDecimal extendedCost;

    private String description;

    @Parent Key<Invoice> invoice;
}

Я пытаюсь собрать все элементы InvoiceLineItems, связанные с данным счетом-фактурой, используя следующее:

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

В моем тестовом примере это работает просто отлично, возвращая 2 строки, как и ожидалось.

Однако, когда я пытаюсь добавить порядок сортировки к приведенному выше запросу, например:

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

Я всегда получаю 0 результатов. Я пытался изменить направление заказа, поле его упорядочения, расположение предложения order() в запросе, все безрезультатно. Может ли кто-нибудь увидеть что-нибудь, что я делаю неправильно здесь?

Спасибо...


person Steve    schedule 07.05.2012    source источник


Ответы (1)


Здесь есть пара потенциальных проблем:

  • Поле описания должно быть проиндексировано
  • Поле описания должно содержать менее 500 символов, поскольку более 500 символов преобразуются в Text, который не индексируется.
  • Избавьтесь от +. Это либо .order("описание"), либо .order("-описание").
person stickfigure    schedule 07.05.2012
comment
Оказывается, это «+». Я думал, что читал, что вы можете использовать «+» для возрастания или «-» для убывания. Вроде нужен только минус. Спасибо за совет. - person Steve; 08.05.2012
comment
Однако интересная сторона. У меня сложилось впечатление, что в Objectify 3.1 все поля были проиндексированы, если только они не были аннотированы @Unindexed. В версии 4.0 это поведение изменено: все поля не индексируются, если они не снабжены аннотацией @Indexed. Я ошибаюсь в этом впечатлении? - person Steve; 08.05.2012
comment
Да вы правы. В версии 3.1 все поля индексируются по умолчанию. Я не был уверен, что вставленный код точен, поэтому мне показалось разумным упомянуть проблему с индексом, что является распространенной ошибкой. Рад, что теперь работает! - person stickfigure; 08.05.2012