kotlin - 使用数据类插入对象
问题描述
我正在学习 kotlin,在 db 中插入原始类型非常容易。这是我的学生数据类的声明方式。
@Entity(tableName = "student")
data class Student(@PrimaryKey(autoGenerate = true) var id: Long = 0,
@ColumnInfo(name="studentID") var studentID: Long = 0,
@ColumnInfo(name="schoolID") var schoolID: Long = 0,
@ColumnInfo(name="guardianID") var guardianID: String = "",
@ColumnInfo(name="matrixNumber") var matrixNumber: String = "",
@ColumnInfo(name="name") var name: String = "",
@ColumnInfo(name="homework") var homework: ArrayList<Homework>,
@ColumnInfo(name="attendance") var attendance: ArrayList<Attendance>
) {}
Homework
并且Attendance
都是另一个包含各种原始类型的数据类;这是我的Homework
数据类
@Entity(tableName = "homework")
data class Homework(@PrimaryKey(autoGenerate = true) var id: Long = 0,
@ColumnInfo(name="subject") var subject: String,
@ColumnInfo(name="teacher") var teacher: String,
@ColumnInfo(name="submissionDate") var submissionDate: String = "",
) {
}
我将在作业和出勤时收到此编译错误
Cannot figure out how to save this field into database. You can consider adding a type converter for it.
如果这很重要,将使用改造来检索上述所有数据。我在某处读到需要使用 TypedConverter 是吗?但我还不是很清楚。
顺便说一句,我来自使用 Java 和 SQLiteHelper,所以我以前在学生班中使用带有 ArrayList 作业和出勤的 POJO 对我来说不是问题,所以我对 Room 也有同样的期望。看来我在这里遗漏了一些东西.
解决方案
推荐阅读
- go - 具有多个通道的多个 goroutine 的死锁
- javascript - 我无法在 Express 服务器中加载我的静态 JS
- ruby-on-rails - 在 usersController 中找不到动作表演
- laravel - 在数据库中插入新记录时发送电子邮件
- hyperledger-composer - Fabric 和 Composer 版本升级后启动 hyperledger-composer 网络时出错
- reactjs - 从父组件推送到反应路由器历史
- python - 如何从字符串中删除某些字符并将它们分解
- mysql - 如何通过 DataGrip 每 100 行创建一个 sql 插入语句
- google-cloud-storage - mb 命令需要一个指定存储桶的 URL
- python - 打印出所有以“.txt”结尾的标题(Python)