1

低レベルのデータストア API を使用しています。次のようなエンティティを作成しました。

Entity entity = new Entity("Error");
entity.setProperty("description", "foo");

データストア ビューアでは、次のように表示されます。

Key        Write Ops   ID/Name    description
----------------------------------------------
ahN0c...   4           259        foo

Entity コンストラクターで何も指定していないため、ID/Name フィールドが自動的に生成されます。「名前」の代わりに「ID」を生成します。これは、不透明な文字列 (「キー」値など) ではなく数字です。

エンティティの「ID/名前」フィールドの「ID」ではなく、データストアにランダムな「名前」を生成させる方法はありますか?

この ID を第三者と共有すると、システム内にあるエラー インスタンスの数を大まかに把握し始める可能性があるためです。自動生成された「キー」フィールドにあるものと同様に、ルックアップ ID の不透明な文字列を提供したいと思います。しかし、これを行う方法がわかりません。

ありがとう

4

2 に答える 2

2

同様のタスクで、UUID を使用してランダムな文字列を作成しました。

String uuid = UUID.randomUUID().toString();
于 2013-05-01T17:38:10.870 に答える
0

com.google.appengine.api.datastore.KeyFactory を使用して、@Devolus からの回答を組み合わせると、次のようになります。

final Key key = KeyFactory.createKey("Error", UUID.randomUUID().toString());
final Entity e = new Entity(key);

KeyFactory.keyToString(key) を介してエンティティのキ​​ーの文字列表現を渡すこともできます。セキュリティのニーズに応じて、暗号化の後である場合があります。

于 2013-05-01T20:16:36.253 に答える