Я пытаюсь сохранить List<Object>
в базе данных комнат.
Я получаю следующую ошибку:
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;
Реализация комнаты:
@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, так что есть большая вероятность, что что-то не так.Заранее спасибо.