2
我有一个典型的人地址实体关系。在查询Person的数据存储之后,我查询Person作为地址的密钥。密钥(即addrKey
,见下文)始终返回为空。但是我在数据存储中查看,我看到了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");
…
}
我也有这个没有身份证问题。但是我设法通过首先将人员放入数据库来解决此问题,然后创建地址实体并使用最近创建的地址实体的密钥更新数据库中的人员实体属性。但是,如果我需要在交易中同时拥有人员和地址实体,该怎么办?如果地址实体不是同时添加的,就像人实体不能被添加(提交)一样?你如何去做? – kerafill 2015-06-23 17:07:17