в приложении у меня есть объект, который содержит список других объектов (скажем, событие, содержащее список назначенных сотрудников)
с использованием 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 не был необходим, после удаления и повторной попытки все работало нормально.