当前位置: 首页 > 知识库问答 >
问题:

动态查询房间数据库不支持LiveData吗?

邹玄裳
2023-03-14

我读过这篇文章。

Room支持@RawQuery注释,以在运行时构造查询,例如代码A。

如果我使用代码B,当我完成它时,我会得到错误B。

似乎@RawQuery不支持返回LiveData,对吧?

代码A

interface DBVoiceDao{ 

   @RawQuery
   fun  runtimeQuery(sortQuery: SupportSQLiteQuery): List<MVoice>
    ...
}

代码B

interface DBVoiceDao{ 

   @RawQuery
   fun  runtimeQuery(sortQuery: SupportSQLiteQuery): LiveData<List<MVoice>>
    ...
}

错误B

Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide `room.schemaLocation` annotation processor argument OR set exportSchema to false.
public abstract class DBVoiceDatabase extends androidx.room.RoomDatabase {
                ^[WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).                                    

共有1个答案

澹台胜
2023-03-14

它确实支持它,但是您必须指定观察到的实体,如以下https://developer.android.com/reference/androidx/room/RawQuery示例所述:

kotlin prettyprint-override">@Dao
 interface RawDao {
   @RawQuery(observedEntities = Song.class)
   LiveData<List<Song>> getSongs(SupportSQLiteQuery query);
 }
 类似资料:
  • 我是新来的和我试图我的得到一个从它。我试图这样做的它与这是id但问题是我不知道如何返回目标从。 这就是<代码>刀 这是Repository类

  • 我正在迁移一个运行在Android上的现有应用程序,并正在将其迁移到Raspberry Pi。只是想知道是否有可能直接迁移Room数据库的使用。

  • 在viewmodel类中获取数据方法

  • 我在Livedata上使用了Room和RxJava,但它不起作用<我试了两种方法。我不知道为什么第二个有效,为什么第一个无效。 (1)按单条获取列表- 道 ViewModel我使用了Repository模式(dao的返回类型和Repository的返回类型相同) 碎片 它在创建片段时工作,但数据在更改时不更新。 道 视图模型 碎片 当数据发生变化时,它工作得很好。 我期待你的建议。 请让我知道,如

  • 我正在尝试获取消息的地图,作者id键如下: 这是我尝试过的: MessageViewModel.getAll()方法返回: 然后我将其转换为一个可流动的流(Flowable::fromIterable),这样它可以一次发出一个项目,而不是整个列表,然后我使用“toMultiMap”进行映射 on成功方法从不被调用,我不知道这里出了什么问题。如果我不使用toMultiMap(并对代码进行相应的修改)