如何合并来自 Android Room LEFT OUTER JOIN select 语句的列

How to combine columns from Android Room LEFT OUTER JOIN select statement

我在当前 Android 应用程序中使用 Room。

我有一个超过 20 列的主数据 table。

其中一列的代码具有关联的参考数据库 table,该参考数据库具有代码的显示说明。

我想将参考数据 table 加入主要数据 table 以允许我显示描述​​而不是代码。

目前我的 select 语句是“select * from main_data_table....

为了达到我想要的结果,我唯一的选择是用所有 20 多个列名的列表替换“select *”吗?将代码列名称切换为 code_description 列名称?

或者是否有我可以使用的“速记”机制?

典型的方法,而不是尝试通过重命名列来替换基础(实体)对象(可能是 main_data_table 对象)中的值,取而代之的是拥有一个包含额外变量的 POJO。

假设对象是 Main_data_tableReference_data 那么你可以

data class main_data_table_with_reference_data(
    @Embedded
    val main_data_table: Main_data_table,
    @Embedded
    val reference_data: Reference_data
) 
  • 请注意,这依赖于两个表中没有相同的列名。如果有重复的列名,那么事情可能会稍微复杂一些。您可以使用 @Embedded 的前缀参数来指定前缀,例如@Embedded(prefix = "myprefix") 对于列名,但是您必须确保查询使用适当的 AS 子句命名这些列。

  • 我总是建议确保所有列名都是唯一的,这样就不需要过长的查询。

您不必嵌入对象,您可以再次使用变量,但查询生成的列名应与 POJO 中的变量名匹配(查询输出更多列没问题,但查询必须输出POJO中的所有变量)