Почему не работает update в room?
Код функции
fun updateCurrentNote(view : View){
compDispose.add(
Single.fromCallable {
dataNote.let {data->
when(data){
is BasicNote ->{
val updateNote = BasicNote(0,headName!!,bodyText!!)
repository.updateBasicNote(updateNote)
}
is PrivateNote ->{
}
}
}
}.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe({
Toast.makeText(getApplication(),"success",Toast.LENGTH_LONG).show()
},{Toast.makeText(getApplication(),"${it.cause}}",Toast.LENGTH_LONG).show()})
)
}
Toast выводит "succes". Но данные в базе остаются неизменными.
@Entity(tableName = "basic_notes")
data class BasicNote(
@PrimaryKey(autoGenerate = true)
var id : Int,
var header : String,
var body : String) : Notes()
Пожалуйста, объясните, подробно ,где проблема.
Ответы (1 шт):
Автор решения: ЮрийСПб
→ Ссылка
Чтобы обновить запись в БД её надо идентифицировать по ID. Вы же передаёте в качестве ID 0, невалидный ID, т.к. ID должны быть >=1.
Вам надо указать конкретный ID, наверное, он у вас в переменной data есть.