kotlin写room数据库(android x)遇到的问题

1,639 阅读1分钟

使用kotlin写room数据库时遇到了一些问题特此分享记录一下

1、创建entity对象时,如果写无参构造函数需要写在公共构造参数位置,不能使用Constructor写否则会报错
报错信息
e: [kapt] An exception occurred: java.util.NoSuchElementException: Collection contains no element matching the predicate.

2、升级数据库时,entity添加参数时如果没有在kotlin文件中声明该参数可以为空,那么在SQL语句中必须写not null

@Entity
class FoodEntity() {
    //定义的主键,id的值自增长
    @PrimaryKey(autoGenerate = true)
    var id:Long=0
    var name:String=""
    var message:String=""
    var createTime:String=""
    var finishTime:String?=null
}

val MIGRATION_2_3 = object : Migration(2, 3) {
    override fun migrate(database: SupportSQLiteDatabase) {
        database.execSQL("alter table FoodEntity add column finishTime text  default 'unknown'")
        database.execSQL("alter table FoodEntity add column createTime text not null default 'unknown'")
    }

}