我有一个实体ModelA(列:a,a1,a2,列表[a3]),而实体ModelA中的列a3是另一个实体ModelB(列:b,b1,b2,列表[b3])。实体ModelA(a)中的主键是实体ModelB中的外键。 b3列也是另一个实体ModelC,其外键由实体ModelB(b)中的主键构成。我如何进行sqlite查询,以便查询ModelA将用ModelB中的所有列表填充a3列,以及使用ModelC中的所有列表填充b3。我尝试了这个查询
@Query("SELECT * FROM ModelA INNER JOIN ModelB ON ModelB.b1 = ModelA.a INNER JOIN ModelC ON ModelC.c1 = ModelB.b WHERE ModelA.a = :journeyID")
fun getModelAUsingJourneyId(journeyID: String) : ModelA
问题是如果ModelB或ModelC具有满足查询的N大小,则我会得到N个结果,尽管tripID始终总是对应于ModelA中的一行,因为它唯一的主键。我想要的只是在ModelA中填充的一行,它将来自所有实体的所有数据,因为它们都与主键和外键相连。
更新:尚未寻求解决方案,我已经选择Realm,因为建立关系更容易。使用Realm,我还可以使用LinkingObject将链接从子级返回到父级。