我正在使用低级数据存储区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”字段中的字符串。但我没有办法做到这一点。
由于
答案 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表示,可能是在加密后根据你的安全需要。