【发布时间】:2020-03-13 00:19:06
【问题描述】:
我刚开始在 Android 上使用 Room,遇到了一些困难。我有一个名为“Employee”的类,它具有字符串名称和具有其属性的 Object EmployeeType。我需要在 Room 实体表中表示两者,还需要检查是否存在空值,因为它们可能为空值。
data class Employee(
@field:SerializedName("name")
val name: String? = null,
@field:SerializedName("employee_type")
val employeeType: EmployeeType? = null,
)
data class EmployeeType(
@field:SerializedName("full_staff")
val fullStaff: String? = null,
@field:SerializedName("contract_staff")
val contractStaff: String? = null
)
@Entity
class EmployeeTable (
@PrimaryKey(autoGenerate = true)
val id: Int,
@ColumnInfo(name = "name")
val name: String
//.. represent EmployeeType here for both full_staff and contract_staff
//.. also EmployeeTypes could be null, how do I handle null pointers
)
// My DOA
@Dao
interface EmployeeTableDao {
@Query("select * from EmployeeTable order by id DESC")
fun findAll(): LiveData<List<EmployeeTable>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(employeeTable: List<EmployeeTable>)
}
// API sample
{
"staff": [
{
"name": "Jeff",
"employee_type": {
"full_staff": "No",
"contract_staff": "Yes"
}
},
//...
],
}
请问我该如何实现?
【问题讨论】:
-
@CommonsWare 谢谢,但嵌入式不起作用。错误:无法弄清楚如何从游标中读取此字段。
-
是否要将员工类型存储在另一个表中?
-
“谢谢,但是嵌入式不起作用”——该网页上有多种技术。 “错误:无法弄清楚如何从光标读取此字段”——您可以考虑针对该问题提出一个单独的 Stack Overflow 问题,并使用 minimal reproducible example 来解决该问题以及完整的错误消息。
-
感谢@CommonsWare 我终于创建了一个 json 转换器并且效果很好。
标签: android android-room