在appengine本地开发服务器数据存储区中生成高值ID

时间:2014-10-21 06:48:10

标签: java google-app-engine google-cloud-datastore

我在appengine数据存储区中的实体看起来像

@Id 
private long playerId;

因此,无论何时创建新实体,它都会被分配一个ID超过1000000的ID。但是,无论何时代码在本地运行,ID都从1开始,增量如2,3,4等。

我已经做了一些假设,将1000000作为最小玩家ID,所以当本地生成的ID为1,3,4等时,我的测试失败了。

有没有办法强制本地服务器或测试环境生成类似于appengine环境的更高ID。

1 个答案:

答案 0 :(得分:1)

要指定自动ID策略,请将datastore.auto_id_allocation_policy系统属性设置为sequentialscattered

  • 顺序: ID是从连续整数序列中分配的。
  • 分散: ID是从大致均匀分布的整数的非重复序列中分配的。

您可以按照以下方式执行此操作:

-Ddatastore.auto_id_allocation_policy=scattered

通过传递给dev_appserver宏的标志设置此系统属性:

dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered

您可以找到更多详情here