Как обновить список Long хранится в таблице в базе данных android номер? - PullRequest
0 голосов
/ 25 марта 2020

Мне нужно обновить список 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 = ?

как это исправить?

...