【问题标题】:GAE/J datastore : how to build an IN query with JDOGAE/J 数据存储:如何使用 JDO 构建 IN 查询
【发布时间】:2011-01-10 02:16:11
【问题描述】:

我正在尝试通过其在 Google App Engine 数据存储区中的键来查询实体集合。这是我尝试执行但没有成功的查询:

Query query = pm.newQuery(Fix.class);
query.setFilter("__key__ IN param");
query.declareParameters("com.google.appengine.api.datastore.Key param");
query.execute(list); // list is an array of keys

我得到的错误是:

javax.jdo.JDOUserException: Portion of expression could not be parsed: IN param

是否可以使用 JDO 或通过键查找实体的低级 API 构建 IN 查询?

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore


    【解决方案1】:

    我认为您可能会混淆 JDO 和 JPA 语法:请参阅 this 页面上的示例

    JPA:

    select from Person where
        favoriteFood IN ('cheeseburger', 'pizza', 'fried chicken')
        order by favoriteFood, age
    

    JDO:

    Query q = pm.newQuery(
        "select from Person where :p1.contains(favoriteFood) order by favoriteFood, age");
    q.execute(Arrays.asList("cheeseburger", "pizza", "fried chicken"));
    

    【讨论】:

      【解决方案2】:

      您是否尝试过this page 中的示例?比如:

      query.addFilter("__key__", Query.FilterOperator.IN, param);
      

      注意param 应该是一个列表。

      【讨论】:

        猜你喜欢
        • 2014-10-19
        • 1970-01-01
        • 2012-04-21
        • 2013-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-10
        • 2013-09-22
        相关资源
        最近更新 更多