首页 > 解决方案 > 如何使用 Kotlin 从 Room 获取最后一个值?

问题描述

我应该如何从 Room 中只返回一个值?

我在 DAO 中进行了如下查询:

@Query("SELECT * FROM testata WHERE id = (SELECT MAX(id) FROM testata)")
fun selectLast(): Testata

哪个应该返回最后一个插入行,然后在我的存储库中我完成了以下操作:

@WorkerThread
suspend fun lastTestata(): Testata {
    return testataDAO.selectLast()
}

在 ViewModal 中,我尝试了以下操作:

fun lastTestata(): Testata = viewModelScope.launch {
    return repository.lastTestata()
}

但相反,它需要 Job 而不是 ViewModal 中的 testatafun lastTestata()那么从 android 的房间获取单个值的正确方法是什么?

标签: androidkotlinandroid-roomandroid-viewmodel

解决方案


如果您的 id 是增量的(应该是),您可以使用限制来获取一个寄存器,如下所示:

SELECT * FROM testata ORDER BY ID DESC LIMIT 1

推荐阅读