我正在使用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支持此标记。由于这个原因,您无法部署应用程序。
答案 0 :(得分:1)
我们知道这个问题并正在修复。
答案 1 :(得分:0)
问题似乎是你将0传递给load()。id()。我不认为这与分散的ids或Objectify有任何关系。