Objectify app引擎 - 使用值列表查询嵌入的实体

时间:2012-05-04 02:13:27

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

我使用objectify-appengine框架进行查询。这是我的简化问题:考虑这两个类: -

public class Customer {
    @Id private String email;
    @Embedded private Account Account = new Account(); // note embedded annotation
}

public class Account {
   private String number;  //example: 1234
}

以下查询有效&给了我一个客户:

Objectify ofy = ObjectifyService.begin();
ofy.query(Customer.class).filter("account.number = ", "1234");

问题:

但是,如果有一个值列表(帐号)。有没有办法在1个查询中获取它们?我尝试传递一个帐号列表,如下所示:

ofy.query(Customer.class).filter("account.number = ", myAccountNumberList);

但如果说不清楚: java.lang.IllegalArgumentException:不允许使用值集合。

思想?

1 个答案:

答案 0 :(得分:1)

filter("account.number IN", theList)

请注意,IN只是让GAE SDK为您发出多个查询,合并结果:

  

IN运算符还执行多个查询,一个用于指定列表中的每个项目,所有其他过滤器相同,IN过滤器替换为EQUAL过滤器。结果按列表中项目的顺序合并。如果查询具有多个IN过滤器,则会将其作为多个查询执行,每个查询对应于IN列表中每个可能的值组合。

来自https://developers.google.com/appengine/docs/java/datastore/queries