安卓-Room-在Room数据库中保存对象

3

我有这个 JSON:

{
"products": [{
    "id": "150",
    "num": "7",
    "name": "450 SA"
}, {
    "id": "122",
    "num": "13",
    "name": "Gillette Blue"
}]}

我已经从中创建了我的模型,我有以下这些类:

我已经从中创建了我的模型,我有以下这些类:

    @Entity
data class ProductsModel(
    @Json(name = "products")
    val products: List<Product>
)

@Entity
data class Product(
    @PrimaryKey(autoGenerate = false)
    val id: String,
    @Json(name = "name")
    val name: String,
    @Json(name = "num")
    val num: String,
)

这是我的DAO类,用于向我的Room数据库插入数据:

@Dao
interface ProductsDAO {

// 2: Insert
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(product: ProductsModel)

当我想要运行这个应用程序时,我遇到了这个错误:

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.

怎样将这些数据保存到我的数据库中?

你需要提供一个ProductsDAO的实现。 - Kishan Maurya
1个回答

3

Room提供了将基本类型和装箱类型相互转换的功能,但不允许实体之间的对象引用。

您可以简单地创建一个包含3个列(id、name和num)的表。因此,每行都是不同的Product

或者

您的数据库应该只保存Product的列表,并且您应该提供一个TypeConverter,该转换器将Product类转换为Room可以持久化的已知类型。

更多关于类型转换器的信息 - 链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接