我使用的是 GAE 1.8.1,我遇到了一个关于 new scattered ID system 的 Objectify 问题。 .至少我认为它是 Objectify,我不确定(使用 Objectify 4 RC1)。我明白了..
Caused by: java.lang.IllegalArgumentException: id cannot be zero
at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:52)
at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:47)
at com.googlecode.objectify.Key.<init>(Key.java:91)
at com.googlecode.objectify.Key.create(Key.java:39)
at com.googlecode.objectify.impl.cmd.LoadTypeImpl.id(LoadTypeImpl.java:77)
记录被正确地放入数据存储中,因为它们有一个 ID,但这是关于提取数据的。
所以我暂时要回滚到以前的样子。它说 here您可以通过修改 appengine-web.xml 中的 auto_id_policy 指定旧版 ID 生成。我试过将此添加到文件中:
<auto-id-policy>legacy</auto-id-policy>
但它不起作用,或者至少如果它验证的 XSD 支持此标记,它可能会起作用。因此,您无法部署该应用。
最佳答案
我们已注意到此问题并正在努力修复。
关于google-app-engine - 如何使用 Java 指定遗留增量 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096453/