Error updating Room field using TypeConverter with a list

Viewed 64

It works fine when getting the list from Room but when i try to update it it gives me this error:

android.database.sqlite.SQLiteException: near "?": syntax error (code 1 SQLITE_ERROR): , while compiling: UPDATE reminderconfig SET alarmDays = ?,?,?,?,?,?,? WHERE id = 1

Here is the query:

@TypeConverters(Converters::class)
@Query("UPDATE reminderconfig SET alarmDays = :days WHERE id = 1")
suspend fun updateAlarmDays(days: List<Int>)

Here is my Converters class:

class Converters {
@TypeConverter
fun fromString(value: String): List<Int> {
    val type = object: TypeToken<List<Int>>() {}.type
    return Gson().fromJson(value, type)
}

@TypeConverter
fun fromArrayList(list: List<Int>): String {
    val type = object: TypeToken<List<Int>>() {}.type
    return Gson().toJson(list, type)
}
}

And here is the Database:

@Database(entities = [ReminderConfig::class], version = 1, exportSchema = false)
@TypeConverters(Converters::class)
abstract class ReminderDatabase : RoomDatabase() {
    abstract fun reminderDao(): ReminderDao
}

Entity class:

@Entity
class ReminderConfig(

@PrimaryKey
val id: Int = 1,

@ColumnInfo
val timeInterval: Int = DEFAULT_INTERVAL_REPEATING,

@ColumnInfo
val startTime: Int = DEFAULT_START_TIME_PERIOD,

@ColumnInfo
val endTime: Int = DEFAULT_END_TIME_PERIOD,

@ColumnInfo
val alarmDays: List<Int> = listOf(0,1,2,3,4,5)
)
1 Answers
Related