Android Room Persistance Library - SQlite:调试 gradle 错误



刚刚设置了一个 Sqlite 数据库,我第一次成功插入,当突然 android 编译失败时,正在尝试在代码中进行更新查询。收到此错误:

Gradle may disable incremental compilation as the following annotation processors are not incremental: room-compiler-2.1.0.jar (androidx.room:room-   compiler:2.1.0), lifecycle-compiler-2.0.0.jar (androidx.lifecycle:lifecycle-compiler:2.0.0).
Consider setting the experimental feature flag android.enableSeparateAnnotationProcessing=true in the gradle.properties file to run annotation processing in a separate task and make compilation incremental.
C:appsrcmainjavacomexamplepersistencerepositoriesNoteRepository.java:74: error: method update in interface NoteDao cannot be applied to given types;
        noteDao.update(notes[0]);
               ^
 required: int,int
 found: Note

与存储库中的此方法相关的错误:

private static class UpdateNoteAsyncTask extends AsyncTask<Note, Void, Void>{
private NoteDao noteDao;
private UpdateNoteAsyncTask(NoteDao noteDao){
this.noteDao = noteDao;
}
@Override
   protected Void doInBackground(Note... notes) {
   noteDao.update(notes[0]);
        return null;
   }
 }

数据访问类:

@Dao
public interface NoteDao {
@Insert
void insert(Note note);
@Query("UPDATE note_table SET distortions= :distortions WHERE cbtId= :cbtId")
void update(int cbtId, int distortions);
@Delete
void delete(Note note);

update定义为:

@Query("UPDATE note_table SET distortions= :distortions WHERE cbtId= :cbtId")
void update(int cbtId, int distortions);

所以你应该像这样使用它:

update(int cbtId, int distortions)

当你像这样使用它时:

noteDao.update(notes[0]);

格拉德尔期待两个论点。在这里,它说它找到了 Note 对象(来自您的参数的对象(。

    required: int,int
    found: Note

最新更新