如何为实体的ID /名称而不是数字生成随机字符串?

时间:2013-05-01 17:16:31

标签: java google-app-engine

我正在使用低级数据存储区API。我创建了这样一个实体:

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

在数据存储区查看器中,我认为:

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

因此,我将自动为我生成ID / Name字段,因为我没有在Entity构造函数中提供任何内容。它生成一个“ID”而不是“Name”,它是一个数字而不是一个不透明的字符串(如“Key”值)。

有没有办法让数据存储区为实体的“ID /名称”字段生成随机“名称”而不是“ID”?

我问,因为如果我与第三方共享此ID,他们可以开始大致了解我的系统中有多少错误实例。我宁愿为查找ID提供一个不透明的字符串,类似于自动生成的“Key”字段中的字符串。但我没有办法做到这一点。

由于

2 个答案:

答案 0 :(得分:2)

对于类似的任务,我使用UUID创建随机字符串。

String uuid = UUID.randomUUID().toString();

答案 1 :(得分: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)传递你的Entitie密钥的String表示,可能是在加密后根据你的安全需要。