实施ROOM时出现此错误Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type)
。
我试图添加一个空的构造函数,但是我没有用。因此,只有我能避免删除embedded
的问题,但如果可能的话,我想找到另一种解决方案。
这是我的实体
@Entity(tableName = "events")
class Event(
@ColumnInfo(name = "name")
@SerializedName("name")
@Expose
var name: String,
@PrimaryKey
@ColumnInfo(name = "id")
@SerializedName("id")
@Expose
var id: String,
@Embedded
var images: List<Image>,
@Embedded
var dates: Dates,
@Embedded
var venues: Venues,
var favorite: Boolean
)
答案 0 :(得分:0)
您可以那样做
@Entity(tableName = "events")
class Event(
@ColumnInfo(name = "name")
@SerializedName("name")
@Expose
var name: String,
@PrimaryKey
@ColumnInfo(name = "id")
@SerializedName("id")
@Expose
var id: String){
var images: List<Image>? = null
var dates: Dates? = null
var venues: Venues? = null
var favorite: Boolean = false
}
答案 1 :(得分:0)
您需要添加一个默认的构造函数,在Kotlin
中看起来像这样(类的主要构造函数已经是第一行;在大多数情况下,关键字constructor
会被省略;请参见{ {3}}):
@Entity(tableName = "events")
class Event() {
...
}
或显式地,而没有省略constructor
关键字:
@Entity(tableName = "events")
class Event constructor() {
}
var favorite
缺少注释,而这些@Expose
注释可能没有用。确保嵌入式类还具有主要构造函数。当一个类中有多个构造函数时,除了一个之外,其他所有人都必须添加@Ignore
批注,以便它知道要使用哪个注释...并且它始终必须是一个空的构造函数,而该构造函数不需要任何内容论点。