Android 房间-保存自定义对象列表
我正试图将Android 房间-保存自定义对象列表,android,kotlin,android-room,Android,Kotlin,Android Room,我正试图将列表保存到房间数据库中 我发现以下错误: 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; 错误:无法确定如何将此字段保存到数据库中。可以考虑为其添加类型转换器。 private java.
列表
保存到房间数据库中
我发现以下错误:
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;
错误:无法确定如何将此字段保存到数据库中。可以考虑为其添加类型转换器。
private java.util.List carList;
会议室实施:
@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
}
@实体(tableName=“nameOfTable”)
类CachedObjectX(
@主键
@ColumnInfo(name=“id”)val id:Long,
@ColumnInfo(name=“list”)
卡利斯特:名单
)
@刀
接口CachedObjectXDao{
@插入(onConflict=OnConflictStrategy.REPLACE)
fun insertAll(列表:ArrayList)
@删除
乐趣删除(列表:ArrayList)
@查询(“选择*自…”)
fun getAll():数组列表
}
类CachedObjectXConverter{
伴星{
var gson=gson()
@类型转换器
@JvmStatic
fun-toInsuredVehicle(json:String):列表{
val type=object:TypeToken(){}.type
返回gson.fromJson(json,类型)
}
@类型转换器
@JvmStatic
趣味toJson(torrent:List):字符串{
val type=object:TypeToken(){}.type
返回gson.toJson(torrent,类型)
}
}
}
@数据库(实体=[CachedObjectX::class],版本=1,exportSchema=false)
@类型转换器(CachedObjectXConverter::类)
抽象类CachedObjectXDb:RoomDatabase(){
伴星{
private const val DB_NAME=“CachedObjectX.DB”
val实例:CachedObjectXDb by lazy{
Room.databaseBuilder(
getContext(),
CCchedObjectXDb::class.java,
数据库名称
).build()
}
}
抽象趣味getDao():CachedObjectXDao
}
有趣的是,我添加了
TypeConverter
,但它仍然抛出错误。我的实现有什么问题?刚从房间开始,所以很有可能出了什么问题。提前感谢。您必须使ObjectX的pojo也成为一个实体您必须使ObjectX的pojo也成为一个实体