我正在制作一个应用程序,我想更新一个现有的实体,但是房间的@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;
}
}
如果有人知道它是如何工作的,请告诉我。 谢谢!
答案 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