Room - ошибка несопоставимых типов: int и <null> - PullRequest
0 голосов
/ 01 апреля 2020

Я только начал осматривать комнаты, устанавливать и обнаруживать ошибку.

Ошибка выглядит следующим образом:

.. \ todolist \ DAO \ NoteDao_Impl. java: 42: ошибка : несопоставимые типы: int и if (value.getId () == null) {

Насколько я знаю, это потому, что первичный ключ - int, поэтому этот класс имеет ошибку (этот класс имеет комната, а не моя создана). Я не знаю, как это исправить, пожалуйста, помогите мне.

Некоторая информация о классе

Примечание. java

@Entity(tableName = "Note")
public class Note {
    @PrimaryKey(autoGenerate = true)
    private Integer id;
    private String content;
    private int color;
    private boolean isChecked;
    private String nameSublist;
    @Ignore
    private Date createAt;

    public Note() {
    }

    public Note(int id, String content) {
        this.id = id;
        this.content = content;
        this.color = 0;
    }
    // getter and setter
}

NoteDao. java

@Dao
public abstract class NoteDao {
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    public abstract Long insertNote(Note note);

    @Update(onConflict = OnConflictStrategy.REPLACE)
    public abstract void updateNote(Note note);

    @Delete
    public abstract void deleteNote(Note note);

    @Query("DELETE FROM " + Constants.KEY_TABLE_NAME_NOTE)
    public abstract void deleteAll();

    @Query("DELETE FROM Note WHERE nameSublist= :sublist")
    public abstract void deleteSublist(String sublist);

    @Query("SELECT * FROM Note")
    public abstract List<Note> queryAll();

    @Query("SELECT * FROM Note  WHERE nameSublist = :sublist")
    public abstract List<Note> querySublist(String sublist);

    @Query("SELECT * FROM Note WHERE id = :id")
    public abstract Note queryNote(int id);
}

База данных приложений. java

@Database(entities = {Note.class}, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
    private static final Migration MIGRATION_1_0 = new Migration(1, 0) {
        @Override
        public void migrate(@NonNull SupportSQLiteDatabase database) {
            // do something when update version
        }
    };
    private static AppDatabase INSTANCE;

    public static AppDatabase getInstance(Context context) {
        if (INSTANCE == null) {
            INSTANCE = Room.databaseBuilder(context, AppDatabase.class, Constants.KEY_TABLE_NAME_APPDATA) //todolist.sqlite
                    .allowMainThreadQueries()   // allow query in main, default false
                    .addMigrations(MIGRATION_1_0)
                    .fallbackToDestructiveMigration()
                    .build();
        }
        return INSTANCE;
    }

    public abstract NoteDao noteDao();

} ​​

Build.gradle

implementation 'android.arch.persistence.room:runtime:2.2.5'
annotationProcessor 'android.arch.persistence.room:compiler:2.2.5'

Ошибка изображения ошибка

1 Ответ

1 голос
/ 01 апреля 2020

Измените переменную 'Integer id' на 'int id' в классе Note и на 'Migrate (1, 0)' на 'Migrate (0, 1)' в классе Appdatabase, я думаю

...