探しているエンティティがデータストアにあることを確認しました。メソッド パラメーターとして渡すリストにこのエンティティが含まれていることを確認しました。渡す文字列のリストに「userGmail」が含まれているすべてのオブジェクトを見つけようとしています。
これが私のコードです
@SuppressWarnings("unchecked")
@ApiMethod(name = "findFriendsByEmailList")
public CollectionResponse<ZeppaUser> findFriendsByEmailList(
@Named("emailsList") List<String> emailsList, User user)
throws OAuthRequestException {
if (user == null) {
throw new OAuthRequestException(
"Null User Authorization Exception, findFriendsByEmailList");
}
PersistenceManager mgr = null;
List<ZeppaUser> execute = null;
Query query = null;
try {
mgr = getPersistenceManager();
query = mgr.newQuery(ZeppaUser.class);
query.declareParameters("java.util.List emailListParam");
query.setFilter("emailListParam.contains( userGmail )");
execute = (List<ZeppaUser>) query.execute(emailsList);
query.closeAll();
} finally {
mgr.close();
}
return CollectionResponse.<ZeppaUser> builder().setItems(execute)
.build();
}
これは、私が受け取るスタック トレースです。
注目すべき点: データストアで見つかった要素を含まないために渡したリストでは、このエラーは発生しません。それが存在するときに、クエリが要素を見つけたが、閉じられていないか、戻りパラメーターに正しく実行されていないと思います。それ以上のリストを返すことが望ましい場合は、問題ありません。これまでに複数のバリエーションを試しましたが、成功していません。それはかなりイライラしています。