我的Google App Engine数据存储中有两个实体使用Java,Objectify 4,我要求这两个实体的自动生成ID应该是唯一的,即来自第一个实体的id永远不会有条目对于第二实体。
如何确保不为不同实体重复生成的ID。 ?
在JPA中,如果我对ids使用生成值策略AUTO,则在数据库级别,保持唯一值,GAE是否也遵循相同的值?我目前正在使用Objectify4进行持久化。
JPA Ref:AUTO strategy
答案 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都是唯一的。