编程语言
首页 > 编程语言> > java-如何在JDO中进行批处理Google DataStore键查找查询

java-如何在JDO中进行批处理Google DataStore键查找查询

作者:互联网

我在Appengine中存储了约5万个实体.我可以通过GQL管理界面使用以下查询查询单个记录:

SELECT * FROM Pet where __key__ = KEY( 'Pet','Fido')

但是我在弄清楚如何通过JDO进行批处理时遇到了麻烦.现在我有这个:

    PersistenceManager pm = ...;
    for(Pet pet : pets) {
        for(String k : getAllAliases(pet)) {
            keys.add(KeyFactory.createKeyString(Pet.class.getSimpleName(), k));
        }
    }
    Query q = pm.newQuery("select from " + Pet.class.getName() + " where id == :keys");
    List<Pet> petlist = (List<Pet>) q.execute(keys);

但是,尽管’Fido’在GQL情况下有效,但是当我使用该Java JDO代码时,它什么也不会返回.我究竟做错了什么?

解决方法:

不要使用查询按键获取实体-它们效率低下,并且需要为每个检索到的对象查询!取而代之的是get the objects by key.JDO似乎不支持按键进行批量获取,但是一次按键进行获取仍然比对它们进行查询要有效得多.

标签:jdo,gql,google-app-engine,java,jdoql
来源: https://codeday.me/bug/20191210/2099889.html