我使用连接B在实体A和C之间创建了一个n:m关系。 每个实体C都有一个参数p,我想使用链接到A的不同C的p所取的值来查询实体A的列表。 它看起来像这样:
A {_id}< - B {_id,A_id,C_id} - > C {_id,p}
我的As与很多B相关联,每个B都链接到单个C
(也有很多B可以链接到相同的C,但我认为它在这里不相关)。
我想要的是,例如,所有的As是:
链接到C,其中p = x AND链接到另一个C,其中p = y
或左连接到C,其中p = z
我已经建立了Chained Joins以访问C中的p属性,但它看起来像一个死胡同我似乎只能给出一个(或许多)条件,单个C应匹配,而不是需要由不同的C匹配的单一条件。我看起来像这样:
QueryBuilder<A> queryA = aDao.queryBuilder();
Join joinAB = queryA.join(B.class, BDao.Properties.A_Id);
Join joinBC = queryA.join(joinAB, BDao.Properties.C_Id, C.class, CDAo.Properties.Id);
如果我继续使用p = z:
joinBC.where(CDao.Properties.p.eq("z");
List<A> listA = queryA.list();
这给我一个链接到C的列表,其中p = z。
但是我如何管理其他条件,是:链接到C,其中p = x AND链接到另一个C,其中p = y?