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

動作するはずです。

実際、これは多対多および多対1の関係を実装するために使用される方法の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

空のコレクションをデータストアに保存することはできません。少なくとも 1 つの値が含まれている必要があります。もしかして見逃したかも…

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