我在appengine上使用objectify,我试图添加一个cron作业来删除超过一小时的所有临时实体:
Iterable<Key<Entry>> allKeys = ofy().load().type(Entry.class)
.filter("temporary", true)
.filter("createdAt", oneHourAgo).keys();
if(allKeys != null){
ofy().delete().keys(allKeys);
}
但在appengine服务器上执行cron作业时总是会出现异常:
com.google.appengine.api.datastore.DatastoreNeedIndexException: no matching index found.
The suggested index for this query is:
<datastore-index kind="Entry" ancestor="false" source="manual">
<property name="temporary" direction="asc"/>
<property name="createdAt" direction="asc"/>
</datastore-index>
有人知道为什么会这样吗?如果我删除了该作业:
.filter("createdAt", oneHourAgo)
答案 0 :(得分:1)
当您将应用程序与开发服务器一起使用时,开发服务器会尝试确定您需要哪些索引,并将它们自动放入索引定义文件中。由于您在cron作业中使用此查询,因此开发服务器无法帮助您。您需要手动为此索引添加定义。