这是我的代码片段。此代码适用于本地开发数据存储。但不适用于真正的应用引擎。此处使用的查询过滤器仅返回181行。
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.FetchOptions;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.Query;
import com.google.appengine.api.datastore.Query.FilterOperator;
Query query = new Query("Share");
query.addFilter("timeOfData", FilterOperator.GREATER_THAN, sdf.parse(date));
query.setKeysOnly();
ArrayList<Key> allKeys = new ArrayList<Key>();
if(numberOfRowsToBedeletedAtOnceString != null)
numberOfRowsToBedeletedAtOnce = Integer.parseInt(numberOfRowsToBedeletedAtOnceString);
for (final Entity e : dcc.prepare(query).asIterable(FetchOptions.Builder.withLimit(numberOfRowsToBedeletedAtOnce)))
{
allKeys.add(e.getKey());
}
allKeys.trimToSize();
dcc.delete(allKeys);
out.print("Deleted By Date count : " + allKeys.size());
out.flush();
out.close();
答案 0 :(得分:1)
正如Google文档建议您可以使用按查询删除实体
Query query = pm.newQuery(Person.class);
query.setFilter("height > maxHeightParam");
query.declareParameters("int maxHeightParam");
query.deletePersistentAll(maxHeight);
检查here
答案 1 :(得分:1)
具体来说,“不起作用”是什么意思?有错误信息吗?它说什么?另外,numberOfRowsToBedeletedAtOnce
的价值是什么?
如果它是截止日期,或者您收到的错误表明删除太大,请尝试减少numberOfRowsToBedeletedAtOnce
。