@Update不会更新实体室

时间:2019-02-04 18:42:45

标签: android-studio android-room

我正在制作一个应用程序,我想更新一个现有的实体,但是房间的@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 :(得分:0)

尝试添加如下所示的@Update批注,它设置为在发生冲突时替换(onConflict = OnConflictStrategy.REPLACE)

道:

20000 events

”替换: 当发生UNIQUE或PRIMARY KEY约束违规时,REPLACE算法会在插入或更新当前行之前删除导致约束违规的现有行,并且该命令将继续正常执行。”

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

SQLite冲突文档: https://sqlite.org/lang_conflict.html