Room kotlin:实体和 Pojos 必须有可用的 public 构造函数。坚持这个错误
Room kotlin: Entities and Pojos must have a usable public constructor. Stuck on this error
我收到两个错误
错误:@Relation注解的字段不能作为构造函数参数。这些值是在构造对象后获取的。
错误:@Relation注解的字段不能作为构造函数参数。这些值是在构造对象后获取的。
我有两个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"
我收到两个错误
错误:@Relation注解的字段不能作为构造函数参数。这些值是在构造对象后获取的。
错误:@Relation注解的字段不能作为构造函数参数。这些值是在构造对象后获取的。
我有两个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"