0

Room 2.4中,DAO 中有一个称为关系查询方法的新功能,您可以编写自定义查询以从 2 个实体中选择列,并且 Room 可以聚合成Map<TableA, List<TableB>>返回类型。

我有一个相当复杂的查询,它确实与嵌套查询左连接以返回火车站地图及其相关铁路线(多对多关系)。我试图让一个@Query方法返回Flow<Map<RailStation, List<RailLine>>>,它可以返回我想要的地图。

现在,我想更进一步让它返回 page 3's PagingSource。由于原来的类型是 a Map,所以我想我应该把分页@Query方法设为PagingSource<Int, Map.Entry<RailStation, List<RailLine>>>。(Map.Entry应该是单个列表项的代表类型,而不是Map代表整个查询结果。)但是,Room 注释处理器抱怨这一行说它无法处理这种类型:

[ksp] RailStationDao.kt:130: Not sure how to convert a Cursor to this method's return type (androidx.paging.PagingSource<java.lang.Integer, java.util.Map.Entry<RailStation, java.util.List<RailLine>>>).

所以我的问题是:Room 注释处理器和 Paging 3 是否支持使用 paging 3 的关系查询方法?如果没有,是否有其他方法可以归档相同的目标?似乎@RelationRoom 中的注解只能支持简单的表连接,但我的情况是我需要在LEFT JOIN子句中编写嵌套查询。

4

0 回答 0