android - 动态查询房间数据库不支持 LiveData 吗?
问题描述
我读过文章。
Room 支持@RawQuery
注解在运行时构造查询,例如 Code A。
如果我使用代码 B,则在编译时会出现错误 B。
好像@RawQuery
不支持returnLiveData
吧?
代码 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).
解决方案
它确实支持它,但您必须指定观察到的实体,如此处所述 https://developer.android.com/reference/androidx/room/RawQuery示例:
@Dao
interface RawDao {
@RawQuery(observedEntities = Song.class)
LiveData<List<Song>> getSongs(SupportSQLiteQuery query);
}
推荐阅读
- json - Flutter:将 JsonSerializable 与具有干净架构的继承结合使用
- python-tesseract - pytesseract 无法识别图片中的数字。也许数字太接近了
- save - 错误:无法编译脚本(PineScript Web)
- sql - 在 SQL 中将行转换为列的查询
- cryptocurrency - 通过向关联令牌元数据帐户发送资金来解决 Solana 钱包问题
- reactjs - 使用反应钩子单击表单提交时如何调用API并将结果存储在状态
- python - DataFrame 构造函数未正确调用且 RangeIndex 对象没有属性
- javascript - 阻止 mathjax 自行运行
- javascript - 单击时选择父容器 ID
- python - Discord.py Bot - 用户信息消息