Room数据库@Delete与@Update注解未生成代码问题求助
Room 2.5.1代码生成日志排查及注解问题解决
一、代码生成过程会输出日志
Room的kapt注解处理器在编译阶段确实会输出日志,默认可能被IDE的日志过滤器隐藏,你可以通过以下方式查看:
- Android Studio查看方式:
- 打开底部的
Gradle Console面板,执行编译任务(比如./gradlew assembleDebug) - 用
Room、kapt或annotation processor作为关键词过滤日志,就能找到Room处理器的输出内容 - 若需要更详细的执行细节,执行命令:
./gradlew assembleDebug --info,会输出注解处理器的完整运行步骤,包括代码生成的环节和潜在问题
- 打开底部的
二、@Delete/@Update代码未生成的常见排查点
除了日志排查,也可以先检查这些常见问题:
- 确认Dao接口中@Delete/@Update方法的参数符合规范:
- @Delete可接收单个实体对象、实体列表,或带
@Query注解的自定义删除SQL(自定义SQL需保证语法正确) - @Update同理,参数需为实体对象或列表,自定义SQL要符合Room语法要求
- @Delete可接收单个实体对象、实体列表,或带
- 检查实体类是否正确标记
@Entity注解,且@PrimaryKey配置无误 - 确认Room数据库类(继承RoomDatabase)通过
@Database(entities = [...], daos = [...], version = ...)注解正确关联了对应Dao接口 - 清理项目缓存后重新编译:执行
./gradlew clean assembleDebug,避免缓存导致的代码生成异常
内容的提问来源于stack exchange,提问作者Manish
相关产品推荐
相关产品推荐

