в приложении у меня есть сущность, которая содержит список других сущностей (скажем, событие, содержащее список назначенных сотрудников)
с помощью объективации - мне нужно найти все мероприятия, на которые назначен конкретный сотрудник.
есть ли простой способ отфильтровать запрос, если он содержит параметр - своего рода противоположность запросу в
... быстрый псевдокод
findAll(Employee employee) {
...
return ofy.query(Event.class).filter("employees.contains", employee).list();
}
буду очень признателен за любую помощь
я пытался просто сделать filter("employees", employee) после просмотра этого 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 оказался не нужным, после его удаления и повторной попытки все заработало нормально.