我正在使用 GAE 1.8.1,并且在使用新的分散 ID 系统时遇到了 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,但这是在提取数据时。
所以我必须暂时回滚到以前的状态。它在此处声明,您可以通过修改appengine-web.xml 中的auto_id_policy来指定旧 ID 生成。我尝试将其添加到文件中:
<auto-id-policy>legacy</auto-id-policy>
但它不起作用,或者至少如果它验证的 XSD 支持此标记,它可能会起作用。因此,您无法部署该应用程序。