我正在使用Room,这是我的数据类
@Entity(tableName = "buy_lead")
class BuyLead(
@PrimaryKey
@SerializedName("id")
val id: String,
@SerializedName("name")
val name: String,
@SerializedName("location")
val location: String,
@SerializedName("state")
val state: String?,
@SerializedName("message")
val message: String,
@SerializedName("product_service")
val serviceType: String?,
@SerializedName("posted_on")
val postedOn: String,
@SerializedName("formatted_date")
val formattedDate: String,
@SerializedName("seconds")
val seconds: Int,
@SerializedName("minutes")
val minutes: Int,
@SerializedName("hours")
val hours: Int,
@SerializedName("days")
val days: Int,
var bought: Boolean = false,
@Ignore var error: String? = null
) {
val postTime: String
get() {
if (seconds < 60) {
if (seconds == 1)
return "$seconds second ago"
return "$seconds seconds ago"
}
if (minutes < 60) {
if (minutes == 1)
return "$minutes minute ago"
return "$minutes minutes ago"
}
if (hours < 24) {
if (hours == 1)
return "$hours hour ago"
return "$hours hours ago"
}
if (days < 5) {
if (days == 1)
return "$days day ago"
return "$days days ago"
}
return formattedDate
}
val address: String
get() =
if (state != null) "${location}, ${state}"
else location
}
它会生成编译时错误
错误:实体和Pojos必须具有可用的公共构造函数。您可以有一个空的构造函数或一个其参数与字段匹配的构造函数(按名称和类型)。 公开最终班BuyLead { ^
我试图在班级内部移动字段,但没有任何反应。如果我从错误中删除了@Ignore
批注,它将进行编译。我不想在数据库中存储错误字段。
kotlin版本为1.2.71
答案 0 :(得分:0)
尝试将主要/默认构造函数添加到您的类中。
像这样
class BuyLead()( . . .
)
另一个例子,
class ByLead( . . .
constructor() (
)
)
答案 1 :(得分:0)
我不知道这是错误还是功能,但Room期望其中之一:
例如:
@Entity(tableName = "movies")
data class MovieKt(
@PrimaryKey
var id : Int,
var title: String,
@Ignore var overview: String)
将不起作用。这将:
@Entity(tableName = "movies")
data class MovieKt(
@PrimaryKey
var id : Int,
var title: String)