嵌入式列表 - 如何


@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'

我的代码通过此

完美地工作

相关内容

  • 没有找到相关文章

最新更新