Room kotlin:实体和 Pojos 必须有可用的 public 构造函数。坚持这个错误

Room kotlin: Entities and Pojos must have a usable public constructor. Stuck on this error

我收到两个错误

我有两个table。一个是任务table,另一个是子任务table。对于任务 table 的每个实体,都有子任务 table.

的一些实体

所以我试图从单个任务中获取所有任务和子任务列表

道:

@Query("Select * from TaskTable")
fun getTasks():List<TaskModel>

任务模型:

class TaskModel(
        @Embedded
        var taskTable: TaskTable,

        @Relation(parentColumn = "id",
                entityColumn = "taskId")
        var subTaskTable: List<SubTaskTable>
)

任务表:

@Entity
data class TaskTable(
    @PrimaryKey(autoGenerate = true)
    var id:Int = 0,
    var taskListId:Int = 0,
    var title: String,
    var details:String?
)

子任务表:

@Entity
data class SubTaskTable (
    @PrimaryKey(autoGenerate = true) var id: Int = 0,
    var taskId: Int = 0,

    var title: String,
    var details: String?)

build.gradle

//room
def room_version = "1.1.0"
implementation "android.arch.persistence.room:runtime:$room_version"
kapt "android.arch.persistence.room:compiler:$room_version"
// Test helpers
testImplementation "android.arch.persistence.room:testing:$room_version"

然后我应用了 kotlin-kapt 插件

帮我解决这个问题。我搜索堆栈溢出并实现了一些答案,但这还没有解决。

嗯,它说它们不应该是构造函数参数,所以尝试让它们不是构造函数参数。

class TaskModel() {
    @Embedded
    lateinit var taskTable: TaskTable

    @Relation(parentColumn = "id",
              entityColumn = "taskId")
    lateinit var subTaskTable: List<SubTaskTable>
}

在我的例子中,我使用了 annotationProcesso 而不是 kapt 并且有旧版本的房间,请检查房间的最新版本

卡普特 "androidx.room:room-compiler:2.2.5"