0

クエリに objectify-appengine フレームワークを使用しています。これが私の単純化された問題です:これらの2つのクラスを考えてください:-

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: A collection of values is not allowed.

考え?

4

1 に答える 1

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

INを使用すると、GAE SDKが複数のクエリを発行し、結果をマージすることに注意してください。

IN演算子は、指定されたリストの項目ごとに1つずつ、複数のクエリも実行します。他のすべてのフィルターは同じで、INフィルターはEQUALフィルターに置き換えられます。結果は、リスト内のアイテムの順序でマージされます。クエリに複数のINフィルタがある場合、INリスト内の値の可能な組み合わせごとに1つずつ、複数のクエリとして実行されます。

https://developers.google.com/appengine/docs/java/datastore/queriesから

于 2012-05-04T03:47:04.997 に答える