3
    List<Key> items = new ArrayList<Key>();
    user.setProperty("ItemsList", items);

上面给出的代码不起作用。在 GAE 中使用 Java 平台可以通过哪些方式实现这一点?

PS虽然以下代码运行良好 -

List<String> items = new ArrayList<String>();
user.setProperty("ItemsList", items);
4

3 回答 3

3

它应该可以正常工作。你忘记放物品了吗?如果您没有为项目设置 id,DataStore 将自动为实体分配一个整数数字 ID。您需要将生成的密钥放入列表中。这是示例代码:

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity item = new Entity("Item");
datastore.put(item);        

Entity user = new Entity("User");
List<Key> items = new ArrayList<Key>();
items.add(item.getKey());
user.setProperty("ItemsList", items);
datastore.put(user);

请查看文档:https ://developers.google.com/appengine/docs/java/datastore/entities

而且,最好通过 Objectify 等第三方 API 处理数据层:http ://code.google.com/p/objectify-appengine/

于 2013-01-31T23:02:20.400 回答
1

它应该工作。

事实上,这是实现多对多和多对一关系的方法之一。

例如,请参见http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Multi-Value_Relationship

Key在 Objectify 示例中使用的是com.googlecode.objectify.Key<T>

于 2013-02-01T08:21:19.213 回答
0

您不能在数据存储中存储空集合。它必须包含至少一个值。难道是你错过了...

items.add(item.getKey());
于 2016-11-29T14:48:31.247 回答