You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓开发使用Room框架时DAO报错参数需为@Entity注解类求解决

报错的核心原因是Room无法识别你DAO方法中参数的类型为被@Entity注解的类,按以下步骤排查即可解决:

  • 第一步:补全DAO类的导入语句
    你当前提供的DAO导入不完整,仅写了半截导入,缺少Room相关注解的导入,补全为以下内容:
import androidx.lifecycle.LiveData
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
  • 第二步:检查DAO方法调用处的参数类型
    确认你调用insert()、delete()方法时,传入的参数是标注了@Entity的Note类实例,不要传入其他类型的参数。
  • 第三步:检查Note类的导入是否正确
    确认DAO文件中导入的Note类,是你编写的标注了@Entity的Note类,而非其他包下的同名类。
  • 第四步:清理编译缓存
    如果以上步骤都没有问题,执行Android Studio菜单栏的 Build -> Clean Project ,再执行 Build -> Rebuild Project ,清除Room注解处理器的旧缓存后重新编译即可。

补全后可用的完整DAO代码如下:

@Dao
interface NoteDao {
    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insert(note :Note)

    @Delete
    suspend fun delete(note : Note)

    @Query("SELECT * FROM Notes_table order by id")
    fun getALL(): LiveData<List<Note>>

    @Query("SELECT * From Notes_table where id= :pos")
    fun getSpecific(pos :Int):Note
}

内容的提问来源于stack exchange,提问作者Tushar Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 09:36:04