我已验证我要查找的实体在数据存储区中。我已验证我作为方法参数传递的列表包含此实体。我正在尝试查找在我传递的字符串列表中包含其“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();
}
这是我从中收到的堆栈跟踪:
值得注意的是:我在传入的列表中没有收到此错误,因为它不包含在数据存储中找到的元素。就在它确实存在的时候,这让我相信 Query 已经找到了元素,但没有正确关闭或执行到返回参数中。如果最好返回列表,那就太好了。到目前为止,我已经尝试了多种变体,但没有成功。它变得非常令人沮丧。