Google应用引擎生成的ID对于不同的实体是唯一的

时间:2013-10-28 12:31:37

标签: java google-app-engine objectify

我的Google App Engine数据存储中有两个实体使用Java,Objectify 4,我要求这两个实体的自动生成ID应该是唯一的,即来自第一个实体的id永远不会有条目对于第二实体。

如何确保不为不同实体重复生成的ID。 ?

在JPA中,如果我对ids使用生成值策略AUTO,则在数据库级别,保持唯一值,GAE是否也遵循相同的值?我目前正在使用Objectify4进行持久化。

JPA Ref:AUTO strategy

1 个答案:

答案 0 :(得分:4)

如果您的实体具有相同的kind(= JPA中的相同类别),则auto-generated IDs保证是唯一的。

更新:OP澄清了他需要跨不同实体类型的唯一ID。

您需要使用手动生成的ID - 使用allocateIds(kind, num)方法,对所有人使用虚拟kind。使用num为1只生成一个ID。

long uniqueId = DatastoreService.allocateIds("MyUniqueUserKind", 1).getStart().getId();

只要您始终使用相同的kind "MyUniqueUserKind",所有以这种方式生成的ID都是唯一的。