ここでは、所有されていない 1 対 1 の関係によってエンティティをフィルター処理する方法について説明します。
Food chocolate = /*...*/;
Query q = pm.newQuery(Person.class);
q.setFilter("favoriteFood == favoriteFoodParam");
q.declareParameters(Key.class.getName() + " favoriteFoodParam");
List<Person> chocolateLovers = (List<Person>) q.execute(chocolate.getKey());
これは完全に機能しますが、お気に入りのFoodParamが複数ある場合はどうなりますか?
フィルターを次のように変更しようとしています。
q.setFilter("favoriteFood == favoriteFoodParam1 || favoriteFood == favoriteFoodParam2");
q.declareParameters(Key.class.getName() + " favoriteFoodParam1,"+Key.class.getName() + " favoriteFoodParam2");
しかし、return 0 オブジェクトを実行すると、favoriteFoodParam1 または favoriteFoodParam2 を削除すると、0 以外が返されます。