Фильтр запроса Objectify по списку ключей, у которых есть родитель
Я хотел бы создать метод Api через Google App Engine (Objectify), который возвращает CollectionResponse сообщений людей, на которых я подписан, отсортированных по убыванию по дате.
У меня есть сущностьPost
и сущностьProfile
оба из которых имеютLong id
как их ключ.
Post
У объекта есть следующее свойство, указывающее, что у него есть родительский объект:
@Parent
private Key<Profile> profileKey;
Profile
Сущность имеет следующее свойство храненияList
изid
Профиль людей следующий:
// Ids of the profiles this person follows
private List<Long> following = new ArrayList<>(0);
Я думал тогда, я мог бы сделать что-то вроде этого:
List<Long> idsProfile = profile.getFollowing();
Query<Goal> query = ofy().load().type(Post.class)
.order("-createdDate")
.filterKey("in", idsProfile)
.limit(Constants.DEFAULT_LIST_LIMIT);
if (cursor != null) {
query = query.startAt(Cursor.fromWebSafeString(cursor));
}
QueryResultIterator<Goal> queryIterator = query.iterator();
List<Post> postList = new ArrayList<Post>(Constants.DEFAULT_LIST_LIMIT);
while (queryIterator.hasNext()) {
postList.add(queryIterator.next());
}
return CollectionResponse.<Post>builder().setItems(postList).setNextPageToken(queryIterator.getCursor().toWebSafeString()).build();
То, что я делаю здесь, это получениеList
из всехid
изProfile
это то, что кто-то следит и пытается запросить и отфильтроватьList
только вернутьPost
от этих пользователей.
Но я получаю эту ошибку:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "badRequest",
"message": "java.lang.IllegalArgumentException: __key__ filter value must be a Key"
}
],
"code": 400,
"message": "java.lang.IllegalArgumentException: __key__ filter value must be a Key"
}
}
Я пробовал разные вещи в.filterKey("in", idsProfile)
немного, но не могу заставить его работать.
Может ли кто-нибудь помочь мне с этой частью сделать эту работу? Спасибо!