我使用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:不允许使用值集合。
思想?
答案 0 :(得分:1)
filter("account.number IN", theList)
请注意,IN只是让GAE SDK为您发出多个查询,合并结果:
IN运算符还执行多个查询,一个用于指定列表中的每个项目,所有其他过滤器相同,IN过滤器替换为EQUAL过滤器。结果按列表中项目的顺序合并。如果查询具有多个IN过滤器,则会将其作为多个查询执行,每个查询对应于IN列表中每个可能的值组合。
来自https://developers.google.com/appengine/docs/java/datastore/queries