Фильтр запроса objectify по списку в сущности содержит параметр поиска
в приложении у меня есть объект, который содержит список других объектов (скажем, событие, содержащее список назначенных сотрудников)
используя objectify - мне нужно найти все события, на которые назначен конкретный сотрудник.
Есть ли основной способ фильтрации запроса, если он содержит параметр - вид, противоположный запросу в
... быстрый псевдокод
findAll(Employee employee) {
...
return ofy.query(Event.class).filter("employees.contains", employee).list();
}
любая помощь будет принята с благодарностью
я попытался просто сделать фильтр ("сотрудники", сотрудник), увидев этоhttp://groups.google.com/group/objectify-appengine/browse_thread/thread/77ba676192c08e20 - но, к сожалению, это возвращает мне пустой список
в настоящее время я делаю что-то действительно неэффективное - прохожу каждое событие, перебираю сотрудников и добавляю их в новый список, если он содержит данного сотрудника, просто для того, чтобы иметь что-то, что работает - хотя я знаю, что это неправильно
позвольте мне добавить одну вещь,
приведенный выше запрос на самом деле не является тем, чем он является, я просто использовал его, потому что я не думал, что это будет иметь значение.
Сотрудник и события находятся в одной группе лиц с бизнесом в качестве родителя
фактический запрос, который я использую, следующий
ofy.query(Event.class).ancestor(businessKey).filter("employees", employee).list();
к сожалению, это все еще возвращает пустой список - портит ли его предок (ключ) фильтр?
Решение, поле сотрудников не было правильно проиндексировано.
Я добавил файл datastore-indexes для создания составного индекса, но первоначально проводил тестирование на значении, которое я добавил до индексации поля сотрудников, это было что-то глупое, что я делал - просто имел индекс в поле «бизнес» и Поле «сотрудники» исправило все. файл datastore-indexes не был необходим, после удаления и повторной попытки все работало нормально.