Комната - сохранить список пользовательских объектов - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь сохранить 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, так что есть большая вероятность, что что-то не так.Заранее спасибо.

1 Ответ

0 голосов
/ 05 апреля 2019

Вы должны сделать pojo ObjectX тоже сущностью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...