我的数据库模型如下:
A.id (1 : n) B.ad_id
所以在 cayenne 中A a
我可以做的对象a.getBArray()
是从给定的 A 条目中返回 B 中的所有条目。然而,我想根据 property 过滤这个列表active = 1
。
显然我可以使用Expression.fromString("active = 1")
with SelectQuery
,但是对于这种方法,我找不到如何关联要在其上运行此查询的 A 实例。
另一种方法是从代码中检索所有条目a.getBArray()
并在代码中过滤,只搜索那些具有 的条目active == true
,恕我直言,这种方法效率低下。
建议大多赞赏。
谢谢你,马克西姆。
- 编辑:
我目前的解决方案是(对象名称已分别替换为 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);
我在问是否有更好、更优雅的解决方案?
谢谢。