Room DB编译报错Task :app:kaptDebugKotlin执行失败,insert方法参数与返回类型异常
Room DAO insert方法报错修复方案
你遇到的错误如下:
错误: 参数类型必须是标注了@Entity的类,或是该类的集合/数组类型。
kotlin.coroutines.Continuation<? super java.lang.Long> continuation);
^
错误: 无法处理insert方法的返回类型。public abstract java.lang.Object insertBillProduct(@org.jetbrains.annotations.NotNull()
可按以下步骤排查修复:
- 校验入参实体类配置
确认insertBillProduct方法的入参类是否添加了@Entity注解,且已关联到Room数据库配置中;如果入参是集合/数组类型,需保证泛型为标注了@Entity的实体类。 - 校验协程相关配置
如果你在DAO方法中使用了suspend关键字,需保证项目引入了版本和Room核心库完全一致的room-ktx扩展依赖,示例配置如下:
同时注意不要手动给// 模块级build.gradle依赖配置,版本需和你项目的Room核心版本一致 implementation "androidx.room:room-ktx:2.5.0"suspend方法添加Continuation类型参数,Kotlin编译阶段会自动生成该参数,手动添加会导致Room注解处理器识别异常。insert方法如果需要返回插入行的ID,直接将返回值声明为Long或List<Long>即可。 - 校验注解处理器配置
确认模块已启用kotlin-kapt插件,且Room的注解处理器通过kapt引入:// 模块级build.gradle顶部插件配置 plugins { id 'kotlin-kapt' } // 依赖配置 kapt "androidx.room:room-compiler:2.5.0"
修改完成后重新编译项目即可。
内容的提问来源于stack exchange,提问作者sharsad k k
相关产品推荐
相关产品推荐

