【发布时间】:2020-09-03 12:29:29
【问题描述】:
我正在尝试将数据插入数据库,但总是得到下面提到的编译时错误,我缺少什么吗?
我遇到了错误
错误:实体和 POJO 必须具有可用的公共构造函数。您可以有一个空的构造函数或参数与字段匹配的构造函数(按名称和类型)。 - java.util.List
用户响应模型类
@Entity(tableName = "RoomDemo")
data class UserResponse(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "code")
@SerializedName("code")
var code: Int,
@Embedded
@SerializedName("data")
var `data`: Data,
@Embedded
@SerializedName("errors")
var errors: Errors,
@ColumnInfo(name = "message")
@SerializedName("message")
var message: String
)
数据模型类
data class Data(
@ColumnInfo(name = "avater")
@SerializedName("avater")
var avater: String,
@Embedded(prefix = "avater")
@SerializedName("user_info")
var userInfo: UserInfo
)
用户信息模型类
data class UserInfo(
@ColumnInfo(name = "location")
@SerializedName("location")
var location: String,
@Embedded
@SerializedName("mediafiles")
var mediafiles: List<Mediafile>)
道接口
@Dao
interface CrushDao {
@Insert(onConflict = REPLACE)
fun insert(userResponse: UserResponse)
}
我的数据库
@Database(entities = [UserResponse::class], version = 2)
abstract class CrushDataBase : RoomDatabase()
{
abstract fun crushDao():CrushDao
companion object{
private var INSTANCE: CrushDataBase? = null
fun getDatabase(context: Context): CrushDataBase? {
if (INSTANCE == null) {
synchronized(CrushDataBase::class) {
INSTANCE = Room.databaseBuilder(
context.getApplicationContext(),
CrushDataBase::class.java, "crushDemo.db"
).build()
}
}
return INSTANCE
}
}
}
【问题讨论】:
-
这是什么?! : @SerializedName("data") var
data: 数据为什么要在单引号中包围数据?
标签: java android kotlin android-room