Android 房间 rawquery 问题

Posted

技术标签:

【中文标题】Android 房间 rawquery 问题【英文标题】:Android room rawquery issue 【发布时间】:2020-12-02 20:17:20 【问题描述】:

我想实现 android Room 持久化。 这是我的 DAO 接口。

@Dao
interface FoodDao 

    /**
     * Returns all data in table for Paging
     *
     * @param query a dynamic SQL query
     */
    @RawQuery
    fun getAll(query: SupportSQLiteQuery): DataSource.Factory<Int, Food>

由于某种原因,我有这个编译错误:

错误:可观察的查询返回类型(LiveData、Flowable、DataSource、DataSourceFactory 等)只能用于直接或间接(例如,通过@Relation)访问至少一个表的 SELECT 查询。对于@RawQuery,您应该通过observedEntities 字段指定要观察的表列表。 公共抽象 androidx.paging.DataSource.Factory getAll(@org.jetbrains.annotations.NotNull

【问题讨论】:

【参考方案1】:

您必须指定观察到的实体:

@RawQuery(observedEntities = [Food::class])

查看更多:https://developer.android.com/reference/androidx/room/RawQuery#observedEntities()

【讨论】:

以上是关于Android 房间 rawquery 问题的主要内容,如果未能解决你的问题,请参考以下文章

Android中的Sqlite奇怪的rawQuery行为

调用database.rawQuery时的Android SQLiteMisuseException

Android SQLite:哪个查询(“query”或“rawQuery”)更快?

SELECT .. WHERE ... IN 在 Android 上使用 rawQuery

带有日期字符串的 Android SQLite rawquery 在 WHERE 子句中不起作用

为啥我的 sqlite 数据库中的 rawquery 给了我错误的人?