@Update не обновляет комнату сущностей - PullRequest
0 голосов
/ 04 февраля 2019

Я создаю приложение и хочу обновить существующую сущность, но метод @Update из комнаты всегда возвращает 0 в качестве значения.Поэтому не было обновлено ни одной строки.

Дао:

@Update
int updateNote(Note note);

Репозиторий:

void updateNote(Note note){
    new updateAsyncTask(noteDao).execute(note);
}

private static class updateAsyncTask extends AsyncTask<Note, Void, Void> {
    private NoteDao asyncTaskNoteDao;

    updateAsyncTask(NoteDao dao) {
        asyncTaskNoteDao = dao;
    }

    @Override
    protected Void doInBackground(final Note... params) {
        asyncTaskNoteDao.updateNote(params[0]);
        return null;
    }
}

Если кто-нибудь знает, как это работает, пожалуйста, дайте мне знать.Спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

Попробуйте добавить аннотацию @Update, как показано ниже, она может быть заменена в случае конфликта (onConflict = OnConflictStrategy.REPLACE)

Dao:

@Update(onConflict = OnConflictStrategy.REPLACE)
int updateNote(Note note);

"ЗАМЕНА: когда УНИКАЛЬНО илиПроисходит нарушение ограничения PRIMARY KEY, алгоритм REPLACE удаляет ранее существующие строки, которые вызывают нарушение ограничения, до вставки или обновления текущей строки, и команда продолжает нормально выполняться "

OnConflictStrategy Android Documentation: https://developer.android.com/reference/android/arch/persistence/room/OnConflictStrategy

Документация по конфликту SQLite: https://sqlite.org/lang_conflict.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...