使用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'")
}
}