У меня есть такая модель
@Entity(tableName = "allrates")
class Data(
@ColumnInfo(name = "rates")
@SerializedName("rates")
@Expose
var rates: Map<String, Rates>,
@ColumnInfo(name = "start")
@SerializedName("start_at")
@Expose
var startDate: String,
@ColumnInfo(name = "end")
@SerializedName("end_at")
@Expose
var endDate: String,
@SerializedName("base")
@Expose
var base: String,
@PrimaryKey(autoGenerate = true)
var id: Int
)
И моя проблема в том, что, когда я пытаюсь вставить в базу данных, не выдает ошибку, но когда я делаю ´get´ всегда возвращает мне ноль.Так что, вероятно, моя проблема в «Конвертере», но я не уверен в этом.
И это мой конвертер
class mapConverter {
@TypeConverter
fun fromString(value: String): Map<String, Rates> {
val mapType = object : TypeToken<Map<String, Rates>>() {
}.type
return Gson().fromJson(value, mapType)
}
@TypeConverter
fun fromStringMap(map: Map<String, Rates>): String {
val gson = Gson()
return gson.toJson(map)
}
}
И вот идетDAO
@Dao
abstract class RatesDao {
@Query("SELECT * FROM allrates")
abstract fun loadRates(): LiveData<Data>
@Insert(onConflict = OnConflictStrategy.REPLACE)
abstract fun insertRates(rates: Data)
}
Связь с ROOM
@Database(entities = [(Data::class)], version = 1, exportSchema = false)
@TypeConverters(mapConverter::class)
abstract class AppDatabase : RoomDatabase() {
companion object {
private var sInstance: AppDatabase? = null
private const val DATABASE_NAME: String = "RatesList"
fun getInstance(context: Context): AppDatabase {
if (sInstance == null) {
synchronized(AppDatabase::class) {
sInstance = Room.databaseBuilder(context.applicationContext,
AppDatabase::class.java, DATABASE_NAME)
.build()
}
}
return sInstance as AppDatabase
}
}
abstract fun ratesDao(): RatesDao
}