典型的な 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");
…
}