2

典型的な Person-Address エンティティ関係があります。Person のデータストアにクエリを実行した後、Person にアドレスのキーをクエリします。キー (つまりaddrKey、以下を参照) は常に null として返されます。しかし、データストアを見ると、Person エンティティと Address エンティティの両方がキーとともに表示されます。明らかに、ラインKey addrKey = (Key) person.getProperty("address")は私がやるべきだと思っていることをしていません。これを修正する方法はありますか?

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    Map<Key, Entity> entities = datastore.get(keys);

    List<Person> result = new ArrayList<Person>();
    Iterator<Entry<Key, Entity>> it = entities.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry<Key, Entity> ent = it.next();

        final Entity person = ent.getValue();
        Key key = person.getKey();
        name = (Long) person.getProperty("name");
        Address address = getAddress(datastore, person);

...
    }


private Address getAddress(DatastoreService datastore, Entity person) {
    Key addrKey = (Key) person.getProperty("address");
    try {
        Entity d = datastore.get(addrKey);
        String street = (String) d.getProperty("street");
…
}
4

1 に答える 1