【发布时间】:2018-08-28 19:36:55
【问题描述】:
我已经查看了很多与此相关的 Stack 答案,但我仍然没有得到它。我有一个 @Embedded 类,但我希望这是一个包含三个元素的布尔数组。有人会用线索棒打我并帮助我重新设计这个实体来处理这个问题或提供我需要的 TypeConverter 吗?如果可以避免的话,我宁愿不使用 JSON/GSON 转换器。
data class Bools (val a: Boolean = true,
val b: Boolean = true,
val c: Boolean = false)
@Entity(tableName = "people_table")
data class Person (@ColumnInfo(name = "first_name") val firstName: String,
@ColumnInfo(name = "last_name") val lastName: String,
@Embedded
val bool: Bools
){
@PrimaryKey(autoGenerate = true)
var id: Int = 0
}
谢谢。
【问题讨论】:
-
“我宁愿这是一个包含三个元素的布尔数组”——暂时忽略 Kotlin。您希望数据库模式中的表示形式是什么?如果答案是“我想要三列”,那么您所拥有的就是您的最佳答案,而不是简单地将三个
Boolean属性直接放在Person中。如果答案是“我想要一个单列”,那么@TypeConverter可以处理它。 -
我认为从数据存储的角度来看,拥有三个独立的列是最有意义的。从代码的角度来看,如果这是一个数组,那将是理想的,这样我就可以更快地遍历它或使用整数访问“元素”。我迷失的是如何弥合从数据库存储到数组的差距。
标签: android arrays kotlin android-room