Мне нужно обновить список Long в таблице следующим образом:
id=userRepository.insertUser(user)
val insertUsers=order.value!!.undertakes
// val insertUsers= mutableListOf<Long>()
insertUsers.add(id) //**add to current list**
orderRepository.updateOrderByUndertakeId(order.value!!.id!!,insertUsers)//update list
и в dao, напишите это так:
@Query("UPDATE orders SET undertakes = :listOfId WHERE id = :id")
suspend fun updateOrderByUndertakeId(id: Long,listOfId:MutableList<Long>)
конвертер комнаты:
class LongListConverter{
@TypeConverter
fun stringToLongList(data: String?): List<Long>? {
return data?.let { it ->
it.split(",").map {
try {
it.toLong()
} catch (ex: NumberFormatException) {
Timber.e(ex, "Cannot convert $it to number")
null
}
}
}?.filterNotNull()
}
@TypeConverter
fun longListToString(longs: List<Long>): String {
return longs.joinToString(",")
}
}
выдает: когда в longList есть только 1 элемент, он работает нормально, каждый раз, когда новый идентификатор заменяет старый, а не объединяется. когда в longList есть 2 элемента, скажем, [23,25], мое приложение cra sh.
android.database.sqlite.SQLiteException: near "?": syntax error (code 1 SQLITE_ERROR): , while compiling: UPDATE orders SET undertakes = ?,? WHERE id = ?
как это исправить?