Моя модель БД выглядит следующим образом:
A.id (1 : n) B.ad_id
Таким образом, в cayenne для объекта A a
я могу сделать a.getBArray()
, который возвращает мне все записи из B из данной записи A.Тем не менее, я хотел бы отфильтровать этот список, основываясь на свойстве active = 1
.
. Очевидно, я могу использовать Expression.fromString("active = 1")
с SelectQuery
, но для этого подхода я не могу найти, как связать Aэкземпляр, под которым я хочу выполнить этот запрос.
Другой подход заключается в извлечении всех записей из a.getBArray()
и фильтрации в коде для поиска только тех, которые имеют active == true
, этот подход, IMHO, неэффективен.
Рекомендации в основном приветствуются.*
Спасибо, Максим.
- РЕДАКТИРОВАТЬ:
Мое текущее решение: (имена объектов были заменены на a & b соответственно):
long aId = DataObjectUtils.longPKForObject(db_a_instance);
String bSQL = "select * from b where active = 1 and a_id = " + aId;
SQLTemplate bQuery = new SQLTemplate(B.class, bSQL);
List<B> dbBs = context.performQuery(bQuery);
и я спрашиваю, есть ли лучшее, более элегантное решение?
Спасибо.