1

低レベル API を使用して、Google App Engine で Value 型のエンティティを永続化する必要があります。私は検索してきましたが、この方法で例を見つけただけです:

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Key k = KeyFactory.createKey(Value.class.getSimpleName(), id);
Entity entity = new Entity(k);
entity.setProperty("column1", value.getColumn1());
entity.setProperty("column2", value.getColumn2());
datastore.put(entity);

私の問題は、id (値の識別子) をシーケンスとして生成する必要があるため、事前にわからないことです。JDOで次のように行われるのと同じように、低レベルAPIでそれを行う方法です。

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;

低レベルでIDを取得したり、シーケンスとして生成されるように構成したりするにはどうすればよいですか?

ありがとう。

4

2 に答える 2

1

Entityクラスには多くのコンストラクターがあります。単一の文字列 (種類名) を取るものを使用すると、データストアに保存するときに ID が生成されます。

于 2011-03-18T19:18:46.320 に答える
0

「allocateIds」を使用して、使用する ID の範囲を割り当ててみてはいかがでしょうか。これにより、使用する予約キーのセットが提供されます。リレーショナル データベースのように厳密なシーケンスを取得できるとは思えませんが、少なくとも、一意で使用可能なキーを保証することはできます。

DatastoreService のドキュメントを参照してください。

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/DatastoreService.html#allocateIds%28com.google.appengine.api.datastore.Key,%20java.lang .文字列、%20long%29

また、さらなるガイダンスについては、Datanucleus がこの API をどのように使用しているかをご覧ください。

http://code.google.com/p/datanucleus-appengine/source/browse/trunk/src/org/datanucleus/store/appengine/valuegenerator/SequenceGenerator.java?r=473

于 2011-03-18T12:35:33.840 に答える