3

Google App Engine で JDO を使用しています。各「従業員」には「キー」があります。キーのセットがあり、キーがこのセットに属するすべての従業員を取得したいと考えていました。

そこで、ここで指定されているように「contains()」フィルターを使用して実装しました。コードは正常に動作し、次のようになります -

List<Key> keys = getLookupKeys(....) ..//Get keys from somewhere.

Query query = pm.newQuery(Employee.class,":p.contains(key)"); //What is ":P" here?
List<Employee> employees = (List<Employee>) q.execute(keys); //This correctly gives me all I want

私が疑問に思っているのは、このクエリの「:P」は何ですか? Employee オブジェクトには「p」という名前のフィールドがなく、クエリでもそのようなパラメーターが宣言されていません。では、この「p」は何を指しているのでしょうか? 「p」には特別な意味がありますか?

4

1 に答える 1

5

暗黙の入力パラメーターをマッピングしていると思います。パラメータは 1 つしかないため、明示的に を呼び出す必要はなくsetParameter、そのまま使用できます。私はそれが大丈夫だったと信じています

Query query = pm.newQuery(Employee.class,":keys.contains(key)");
List<Employee> employees = (List<Employee>) q.execute(keys); 

これはより明確かもしれません。

別の例については、 Apache JDOQL ドキュメントの「暗黙的なパラメーター」の部分を参照してください。

于 2010-08-13T05:29:22.130 に答える