如何使用Java指定旧版增量ID

时间:2013-06-13 20:29:49

标签: google-app-engine objectify

我正在使用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支持此标记。由于这个原因,您无法部署应用程序。

2 个答案:

答案 0 :(得分:1)

我们知道这个问题并正在修复。

答案 1 :(得分:0)

问题似乎是你将0传递给load()。id()。我不认为这与分散的ids或Objectify有任何关系。