Shu*_*der 4 android kotlin android-room
我遇到两个错误
错误:带@Relation注释的字段不能为构造函数参数。在构造对象之后获取这些值。
错误:带@Relation注释的字段不能为构造函数参数。在构造对象之后获取这些值。
我有两个桌子。一个是任务表,另一个是子任务表。对于任务表的每个实体,子任务表都有一些实体。
所以我试图从单个任务中获取所有任务和子任务列表
道:
@Query("Select * from TaskTable")
fun getTasks():List<TaskModel>
Run Code Online (Sandbox Code Playgroud)
任务模型:
class TaskModel(
@Embedded
var taskTable: TaskTable,
@Relation(parentColumn = "id",
entityColumn = "taskId")
var subTaskTable: List<SubTaskTable>
)
Run Code Online (Sandbox Code Playgroud)
任务表:
@Entity
data class TaskTable(
@PrimaryKey(autoGenerate = true)
var id:Int = 0,
var taskListId:Int = 0,
var title: String,
var details:String?
)
Run Code Online (Sandbox Code Playgroud)
子任务表:
@Entity
data class SubTaskTable (
@PrimaryKey(autoGenerate = true) var id: Int = 0,
var taskId: Int = 0,
var title: String,
var details: String?)
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
我应用了kotlin-kapt插件
帮助我解决此问题。我在堆栈溢出上搜索并实现一些答案,但此问题未解决。
好吧,它说它们不应该是构造函数参数,因此请尝试使它们不是构造函数参数。
class TaskModel() {
@Embedded
lateinit var taskTable: TaskTable
@Relation(parentColumn = "id",
entityColumn = "taskId")
lateinit var subTaskTable: List<SubTaskTable>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
985 次 |
| 最近记录: |