【问题标题】:Room query returns list instead of map房间查询返回列表而不是地图
【发布时间】:2022-06-16 04:27:47
【问题描述】:

我有一个表 Messages (PrimaryKey messageId) 和一个表 ReadUpdates。每条消息都有许多与

相关的 ReadUpdates

我想用下面的 sql 查询 Room 数据库,并得到一个 key=Message 和 value=List 的 Map

@Query(
        """
        Select * from messages
        inner join readUpdates on messages.messages_message_id = readUpdates.read_upd_message_id
        where messages.messages_message_id = :messageId
        and messages.messages_server_id = :serverId
    """
    )
    fun getMessageRecipients(
        serverId: Long,
        messageId: String
    ): LiveData<Map<Message, List<ReadUpdateAccount>>>

ReadUpdateAccount 是加入 ReadUpdate 和 Account 的模型

data class ReadUpdateAccount(
    @Embedded
    val readUpdate: ReadUpdate,

    @Relation(entity = Account::class, parentColumn = "read_upd_connection_id", entityColumn = "accounts_account_id")
    val account: Account?
)

调试查询后,我看到的不是示例

我有

  • ,

显然,我需要第一个,但我得到了第二个 为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 相信kulukimaki here的解决方案会对你有所帮助
  • 我不知道 Room,但这就是关系数据库的工作方式——通过加入我们创建一个包含重复项目的平面列表。你需要一些聚合操作,但我不确定 Room 是否支持这样的东西。
  • 不,我以前也这样做过。我不知道为什么会发生这种情况

标签: android kotlin android-room android-room-relation


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
相关资源
最近更新 更多