Objectify / AppEngine: лучший способ подсчитать количество объектов, возвращаемых запросом? - PullRequest
8 голосов
/ 18 февраля 2011

Каков наилучший (то есть наиболее эффективный) способ подсчета количества объектов, возвращаемых запросом, без их фактической загрузки, используя Objectify на AppEngine ?Я предполагаю, что лучше всего получить все ключи и посчитать результат:

public int getEntityCount(Long v) {
    Objectify ofy = ObjectifyService.begin();
    Iterable<Key<MyEntity>> list = ofy.query(MyEntity.class)
            .filter("field", v).fetchKeys();
    int n = 0;
    for (Key<MyEntity> e : list)
        n++;
    return n;
}

Кажется, нет никакого специального метода для этого.Есть идеи?

1 Ответ

14 голосов
/ 18 февраля 2011

Нашли:

int n = Iterable<Key<MyEntity>> list = ofy().query(MyEntity.class)
      .filter("field", v).count();

Это так просто, хотя и эффективно, потому что он получает все ключи. Лучше создать свой пользовательский интерфейс для обработки неизвестного количества результатов (например, Google, который дает подсказки о количестве страниц, но не фактическом количестве)

...