0

我正在使用 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
}

以下查询有效并给了我 1 个客户:

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

问题:

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

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

但是如果失败说: java.lang.IllegalArgumentException:不允许值的集合。

想法?

4

1 回答 1

1
filter("account.number IN", theList)

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

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

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

于 2012-05-04T03:47:04.997 回答