代码之家  ›  专栏  ›  技术社区  ›  Jim Blackler

Java Google应用程序引擎数据存储:JDO查询过滤器上可用的“IN”操作符,与Python一样?

  •  0
  • Jim Blackler  · 技术社区  · 17 年前

    This page 描述一个“IN”运算符,该运算符可在GAE数据存储中用于将字段与可能匹配的列表(而不仅仅是单个值)进行比较:

    然而,这是针对Python的。在Java(AppEngine1.2.5)中,尝试

    query.setFilter("someField IN param");
    

    在我的javax.jdo.query上触发一个JDOUserException“无法解析表达式的部分:在param中”。

    有没有办法做到这一点?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Carsten    15 年前

    要使用IN运算符,我使用以下命令:

    List<Site> query(List<String> searchTerms)
    {
        javax.jdo.Query q = pm.newQuery(Site.class);
        q.setFilter("param.contains(siteField)");
        q.declareParameters("java.util.Collection param");
        return (List<Site>)q.execute(searchTerms);
    }
    
        2
  •  1
  •   Alex Martelli    17 年前

    的Python版本 IN 实际上是在应用程序级代码中实现的(您可以检查它,因为它是开源应用程序引擎SDK的一部分):本质上,是一个带有 在里面 就像你的一样 == (其中N==len(param)),这N个查询的结果合并为整体结果。