google-app-engine - Google App Engine Keys Only Query with CURSOR
问题描述
我正在使用具有 10000 多个实体的 PersistenceManager 查询获取数据存储实体,我只想获取实体的键,因为我使用的是限制为 1000 的游标,但获取后游标为空
PersistenceManager pm = PMF.get().getPersistenceManager();
Query q = null;
List<String> idList = null;
int cursorLimit = 1000;
Map<String, Object> cursorMap = null;
Cursor cursorObj = null;
CommonUtil utility = new CommonUtil();
HashMap<String, Object> responseMap = null;
responseMap = new HashMap<String, Object>();
Query q = pm.newQuery("select id from " + Person.class.getName());
if( requestMap.containsKey("cursor") )
{
cursorMap = new HashMap<String,Object>();
cursorObj = Cursor.fromWebSafeString( String.valueOf( requestMap.get("cursor") ) );
cursorMap.put(JDOCursorHelper.CURSOR_EXTENSION, cursorObj);
q.setExtensions(cursorMap);
}
q.setRange(0, cursorLimit);
idList = (List<String>) q.execute();
cursorObj = JDOCursorHelper.getCursor(idList);
responseMap.put("contactIdList", idList);
if(idList.size() == cursorLimit && cursorObj != null)
responseMap.put("cursor", cursorObj.toWebSafeString());
else
responseMap.put("cursor", "");
q.closeAll();
pm.close();
但是 cursorObj 总是为空,有没有人提出这个问题或如何克服它
光标在获取整个实体时工作正常,但在键中仅查询它不能按预期工作
解决方案
尝试仅键查询:
Query<Key> query = Query.newKeyQueryBuilder().setKind("Task").build();
推荐阅读
- rust - 如何在编译时创建字母数组?
- php - 使这个查询更简单
- java - 无法执行目标 .maven.plugins:maven-compiler-plugin:3.8.0:compile on project fast-grill: Fatal error compile: java.lang.NullPointerException
- c++ - 从继承的模板类中正确实现虚函数
- node.js - 如何在循环中使用描述?
- haskell - Haskell中具有自定义索引类型的静态数组
- reactjs - 为什么我无法在下拉菜单中的搜索字段中找到光标?
- android - 合并 dex 档案时构建 APK 错误时出现错误
- sql-server - 如何处理跨多个表插入大量数据(1500 万)的事务
- android - 我收到错误无法验证证书链,错误:java.security.cert.CertPathValidatorException