Я пытаюсь перевести этот код Python на Java из презентации Building Scalable, Complex Apps on App Engine,Google App Engine DataStore - Как эффективно выбрать родительские объекты из ключей дочерней таблицы в Java?
Есть ли поддержка на GAEJ, чтобы сделать это?
indexes = db.GqlQuery("SELECT __key__ FROM MessageIndex " "WHERE receivers = :1", me)
keys = [k.parent() for k in indexes]
messages = db.get(keys)
Ниже моей реализации на Java. Являются ли эти функциональные и эффективные эквивалентные? Что произойдет, если у меня будет большое количество ключей?
Query query1 = new Query("MessageIndex");
query1.setKeysOnly();
query1.addFilter("receivers", FilterOperator.EQUAL, me);
PreparedQuery pq2 = datastore.prepare(query1);
Iterable<Entity> entities = pq2.asIterable();
HashSet<Key> keys = new HashSet<Key>();
for (Entity en : entities)
keys.add(en.getParent());
Query query2 = new Query("Messages");
query2.addFilter("__key__", FilterOperator.IN, keys);
Рассматривали ли вы с помощью объективизации? Это намного менее болезненно, чем JDO или JPA. –
Что было бы эквивалентом фрагмента выше с объективизацией? –
Я сам не использую Java, поэтому я не мог сказать, но в документах Objectify есть много примеров. –