У меня есть сущности A и B, и у A может быть множество B. Один и тот же экземпляр B может принадлежать нескольким A. Так что здесь есть классическое отношение «многие ко многим».
В GAE нет прямой поддержки отношений «многие ко многим», вместо этого они предлагают возможность использовать наборы ключей для связанных отношений. Так что в A я буду поддерживать множество ключей записей в B.
Теперь проблема в том, как я могу запросить объекты типа B, принадлежащие данному объекту типа A и соответствующие определенным критериям? В простом SQL я бы сделал это так:
select B.*
from
B inner join A
on B.A_ID=A.ID
where B.property0=criteria1
and B.property1=criteria2 ...
and ...
но поскольку я не могу присоединиться, мне нужно сделать что-то вроде
select B.*
from B
where B.A_ID in ( ... )
and B.property0=criteria1
and B.property1=criteria2 ...
and ...
поэтому сам запрос может быть очень длинным из-за количества идентификаторов.
Есть ли лучший способ?