我有这个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类,用于将数据插入房间数据库:
@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.
如何将这些数据保存到数据库中?
答案 0 :(得分:1)
Room提供在原始类型和装箱类型之间进行转换的功能,但不允许在实体之间进行对象引用。
您可以简单地创建一个包含3列的表-id,name和num。所以每一行都是不同的Product
OR
您的数据库应该只保存Product
的列表,并且您应该提供一个TypeConverter
,它将Product
类与Room可以持久的已知类型进行转换。
有关类型转换器的更多信息-link