首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >房间保存自定义对象列表

房间保存自定义对象列表
EN

Stack Overflow用户
提问于 2019-04-05 15:56:41
回答 1查看 480关注 0票数 1

我正在尝试将List<Object>保存到房间数据库中。

我得到以下错误:

代码语言:javascript
运行
复制
error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
    private java.util.List<xxx.models.OBJECTX> carList;

房间实现:

代码语言:javascript
运行
复制
@Entity(tableName = "nameOfTable")
class CachedObjectX(
    @PrimaryKey
    @ColumnInfo(name = "id") val id: Long,

    @ColumnInfo(name = "list")
    var carList: List<ObjectX>
)

@Dao
interface CachedObjectXDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insertAll(list: ArrayList<CachedObjectX>)

    @Delete
    fun delete(list: ArrayList<CachedObjectX>)

    @Query("SELECT * FROM ...")
    fun getAll(): ArrayList<CachedObjectX>

}

class CachedObjectXConverter {

    companion object {
        var gson = Gson()

        @TypeConverter
        @JvmStatic
        fun toInsuredVehicle(json: String): List<ObjectX> {
            val type = object : TypeToken<List<ObjectX>>() {}.type
            return gson.fromJson(json, type)
        }

        @TypeConverter
        @JvmStatic
        fun toJson(torrent: List<ObjectX>): String {
            val type = object: TypeToken<List<ObjectX>>() {}.type
            return gson.toJson(torrent, type)
        }
    }

}

@Database(entities = [CachedObjectX::class], version = 1, exportSchema = false)
@TypeConverters(CachedObjectXConverter::class)
abstract class CachedObjectXDb : RoomDatabase() {
    companion object {
        private const val DB_NAME = "CachedObjectX.db"

        val instance: CachedObjectXDb by lazy {
            Room.databaseBuilder(
                getContext(),
                CCchedObjectXDb::class.java,
                DB_NAME
            ).build()
        }
    }

    abstract fun getDao(): CachedObjectXDao
}

有趣的是,我添加了TypeConverter,但它仍然抛出错误。我的实现出了什么问题?刚开始使用Room,所以很有可能出了什么问题。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-04-05 16:24:29

您必须使ObjectX的pojo也成为一个实体

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55530745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档