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

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

我在 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 系统属性设置为 sequentialscattered

  • 顺序: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/

相关文章:

google-app-engine - golang中不同实体种类的无情祖先查询

java - 如何将 List<entity> 添加或放入 GAE memcache 编程语言 Java?

JAVA - 总共解析为 2 个字符串

java - 为什么java -cp无法搜索到目录下的.jar?

python - 如何在应用程序引擎(python)中导入TemplateDoesNotExist?

android - 将敏感数据保存在数据库中-安全的服务器通信

google-app-engine - 如何查询比较同一实体的两个属性的 AppEngine 数据库?

java - 在Java中从一维数组快速转换为二维

java - 如何使用java检查给定对象列表中是否存在指定对象

python - 任何 Python ORM(SQLAlchemy?)都可以与 Google App Engine 一起使用吗?