2012-06-01 3 views
1

Я, по-видимому, смущен тем, как должен работать запрос предка GAE. Мое понимание заключалось в том, что запрос предка должен возвращать все поколения потомков, а не только непосредственные дети. Тем не менее, если я изменю пример из Руководства для разработчиков следующим образом, я получаю только непосредственных детей, а не внука. Что мне не хватает?Запрос предка Google App Engine

 Entity person = new Entity("Person", "tom"); 

     Entity weddingPhoto = new Entity("Photo", person.getKey()); 
     weddingPhoto.setProperty("imageUrl", 
           "http://domain.com/some/path/to/wedding_photo.jpg"); 

     Entity babyPhoto = new Entity("Photo", person.getKey()); 
     babyPhoto.setProperty("imageUrl", 
           "http://domain.com/some/path/to/baby_photo.jpg"); 

// добавить внучку:

 Entity grandbabyPhoto = new Entity("Photo", babyPhoto.getKey()); 
     grandbabyPhoto.setProperty("imageUrl", 
           "http://domain.com/some/path/to/grandbabyPhoto.jpg"); 

     Entity dancePhoto = new Entity("Photo", person.getKey()); 
     dancePhoto.setProperty("imageUrl", 
           "http://domain.com/some/path/to/dance_photo.jpg"); 

     Entity campingPhoto = new Entity("Photo"); 
     campingPhoto.setProperty("imageUrl", 
           "http://domain.com/some/path/to/camping_photo.jpg"); 
     getDatastore().put(
      java.util.Arrays.asList(person, weddingPhoto, babyPhoto, dancePhoto, campingPhoto)); 

     Query userPhotosQuery = new Query("Photo"); 
     userPhotosQuery.setAncestor(person.getKey()); 

     // This returns weddingPhoto, babyPhoto and dancePhoto, but 
     // not grandbabyPhoto --- why??? 
     List<Entity> results = 
       getDatastore().prepare(userPhotosQuery).asList(
       FetchOptions.Builder.withDefaults()); 

Большое спасибо за любую помощь вы можете предоставить!

ответ

1

Потому что ваш оператор put(..) не содержит grandbabyPhoto, поэтому он не сохраняется.

+0

Очевидно, @peter. Благодарю. Удивительно, как вы можете смотреть и не видеть. –

Смежные вопросы