我在 appengine 数据存储区中的实体看起来像
@Id
private long playerId;
因此,在 appengine 中,每当创建新实体时,都会为它分配一个超过 1000000 的 ID。但是,每当代码在本地运行时,ID 都会从 1 开始,然后递增,如 2、3、4 等。
我已经做了一定的假设,以 1000000 作为最小玩家 ID,所以当本地生成 1、3、4 等 ID 时,我的测试会失败。
有没有办法强制本地服务器或测试环境生成类似于 appengine 环境的更高 ID。
最佳答案
要指定自动 ID 策略,请将 datastore.auto_id_allocation_policy
系统属性设置为 sequential
或 scattered
。
- 顺序:ID 是根据连续整数的序列分配的。
- 分散:ID 是从近似均匀分布的整数的非重复序列中分配的。
您可以按如下方式执行此操作:
-Ddatastore.auto_id_allocation_policy=scattered
通过传递给 dev_appserver 宏的标志来设置此系统属性:
dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered
您可以找到更多详细信息here .
关于java - 在 appengine 本地开发服务器数据存储区中生成高值 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26480528/