Android Studio报错:无法从Cursor读取字段,Room查询对象加私有变量引发问题
解决Room查询POJO添加私有变量后报错的问题
问题原因
Room在处理用于接收联合查询结果的POJO类时,会扫描类中所有成员变量(无论访问修饰符是public还是private),尝试将数据库查询游标中的列与这些变量一一映射。你新增的私有变量tester没有对应的数据库查询列,Room无法从游标中找到对应数据,因此抛出Cannot figure out how to read this field from a cursor错误。
解决方案
给这个私有辅助变量添加@Ignore注解,明确告诉Room忽略该变量,不要尝试从游标中读取对应数据:
import androidx.room.Ignore class ReadObject ( var id: Long, var description: String?, var relationOf: Int, var namerelation: String ) { @Ignore private var tester: Int = 0 // 你的构造函数变体和辅助函数 }
补充说明
Room的编译期注解处理器不会因为变量是私有就跳过处理,只要变量没有被@Ignore标记,就会被纳入映射逻辑。所以即使是内部辅助变量,也必须显式标记忽略,避免触发映射错误。
内容的提问来源于stack exchange,提问作者Michel
相关产品推荐
相关产品推荐

