Room kotlin: у сущностей и Pojos должен быть общедоступный конструктор. Застрял на этой ошибке - PullRequest
0 голосов
/ 09 мая 2018

Я получаю две ошибки

  • ошибка: поля, помеченные @Relation, не могут быть параметрами конструктора. Эти значения выбираются после создания объекта.

  • ошибка: поля, помеченные @Relation, не могут быть параметрами конструктора. Эти значения выбираются после создания объекта.

У меня есть два стола. Один из них - таблица задач , а другой - таблица подзадач . Для каждой сущности таблицы задач есть несколько сущностей таблицы подзадач.

Итак, я пытаюсь получить все задачи и список подзадач для отдельных задач

ДАО:

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

TaskModel:

class TaskModel(
        @Embedded
        var taskTable: TaskTable,

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

TaskTable:

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

SubTaskTable:

@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 плагин

Помогите мне решить эту проблему. Я ищу переполнение стека и получаю какой-то ответ, но это не исправлено.

1 Ответ

0 голосов
/ 09 мая 2018

Ну, это говорит, что они не должны быть параметрами конструктора, поэтому попробуйте сделать их не параметрами конструктора.

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

    @Relation(parentColumn = "id",
              entityColumn = "taskId")
    lateinit var subTaskTable: List<SubTaskTable>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...