@Entity
data class Products(
val id:String,
val title: String,
val description: String,
val imgUrl: String,
val usageRules : List<String>, //what happens here?
)
我正在为Android提供空间,而我所见过的大多数示例都无法解释您如何创建其中包含ArrayList的实体表。
有@embedded似乎只嵌套另一个对象,但我正在尝试嵌套一个称为usagerules
的对象列表我需要创建一个单独的用法规则表吗?问题是,每个用法规则都可以包含在上面的多个产品上,并且产品也可以具有多个用法规则,因此与许多关系是许多关系。
房间可以吗?
我知道,在领域中,我可以简单地将USAGERULE列表&lt;>转换为一个领域列表&lt;>。房间里有等效的吗?
另一种选择是因为它只是一条字符串。我可以简单地创建一个称为Allusage的新表实体字段,该字段将所有USAGERULE存储在特定产品上的所有usagerules使用Semperator存储在特定产品上,然后在我想从房间再次构造数据对象时,我可以通过tesseage.split.split(..(
仍然宁愿以另一种方式做到这一点,因为我可能会遇到一个场景,不仅是字符串列表,而且是对象列表。
尝试使用arraylist: -
@Entity
data class Products(
val id:String,
val title: String,
val description: String,
val imgUrl: String,
val usageRules : ArrayList<String>, //what happens here?
)
需要使用转换器: -
class Converters {
companion object {
@TypeConverter
@JvmStatic
fun fromString(value: String): ArrayList<String>? {
val listType = object : TypeToken<ArrayList<String>>() {}.type
return Gson().fromJson(value, listType)
}
@TypeConverter
@JvmStatic
fun fromArrayList(list: ArrayList<String>?): String {
val gSon = Gson()
return gSon.toJson(list)
}
}
}
并在此处定义转换器: -
@Database(entities = [TableModel::class], version = 1, exportSchema = false)
@TypeConverters(Converters::class)
abstract class RDatabase : RoomDatabase() {
abstract val tableDAO: TableDAO
}
一个额外的实施需求: -
implementation 'com.google.code.gson:gson:2.8.5'
我的代码通过此