我收到两个错误
错误:使用@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 插件
帮我解决这个问题。我搜索堆栈溢出并实现一些答案,但这不是固定的。
答案 0 :(得分:7)
嗯,它说它们不应该是构造函数参数,所以尝试使它们不是构造函数参数。
class TaskModel() {
@Embedded
lateinit var taskTable: TaskTable
@Relation(parentColumn = "id",
entityColumn = "taskId")
lateinit var subTaskTable: List<SubTaskTable>
}
答案 1 :(得分:0)
在我的情况下,我使用annotationProcesso代替了kapt,并且存在旧版的room,请检查room的最新版本
kapt“ androidx.room:room-compiler:2.2.5”