Android Room DAO的@Query无法识别@Entity表名和字段怎么办
Android Room @Query表名字段无法识别解决方法
- 缺失Room注解处理器依赖
这是最常见的触发原因,你需要在模块级build.gradle文件中正确引入Room的注解处理器依赖,Java项目配置参考如下:
如果你是Kotlin项目,需要先在dependencies { def room_version = "2.5.0" // 可替换为你实际使用的Room版本 implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" implementation "androidx.room:room-ktx:$room_version" // 非必选,需要Kotlin扩展支持时添加 }build.gradle顶部引入kapt插件:
再把注解处理器依赖替换为kapt格式:plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' // 必须添加 }kapt "androidx.room:room-compiler:$room_version" - 实体类未注册到RoomDatabase
你定义的Photo实体必须显式添加到自定义RoomDatabase类的entities数组中,Room才会识别对应的表结构,参考代码如下:@Database(entities = {Photo.class}, version = 1) public abstract class PhotoDatabase extends RoomDatabase { public abstract PhotoDao photoDao(); } - IDE缓存异常
Android Studio缓存异常也会导致符号识别错误,点击顶部菜单栏File -> Invalidate Caches...,勾选清理选项后选择Invalidate and Restart重启IDE即可恢复。 - 未触发项目编译
Room的表和字段元数据需要注解处理器在编译阶段生成,所有配置完成后先执行一次Build -> Make Project,IDE就能正常识别@Query中的表名和字段了。
内容的提问来源于stack exchange,提问作者CaMo
相关产品推荐
相关产品推荐

