Запрос постоянства комнаты Android возвращает нулевое значение - PullRequest
0 голосов
/ 06 июля 2018

В настоящее время я изучаю, как использовать библиотеку Android Room Persistence. Следующий код сталкивается с проблемой при попытке запроса (findById) для сохраненного логического значения, которое связано с int (ID). При попытке сделать это, он постоянно выдает ноль. Есть ли здесь проблема, которую я не заметил? Может ли кто-нибудь указать мне правильное направление на то, что я здесь делаю неправильно? Спасибо.

FavoriteMovieDao

@Dao
public interface FavoriteMovieDao {
    @Query("SELECT * FROM favoritemovie")
    List<FavoriteMovie> getAll();

    @Query("SELECT * FROM favoritemovie WHERE id IN (:ids)")
    List<FavoriteMovie> loadAllByIds(int[] ids);

    @Query("SELECT * FROM favoritemovie WHERE id LIKE :id LIMIT 1")
    FavoriteMovie findById(int id);

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insert(FavoriteMovie movie);

    @Delete
    void delete(FavoriteMovie movie);
}

FavoriteMovie.java (сущность)

@PrimaryKey
private int id;
public int getId(){
    return id;
}

public void setId(int id){
    id = id;
}

@ColumnInfo(name = "favorite")
private boolean favorite;

public boolean getFavorite(){
    return favorite;
}

public void setFavorite(boolean favorite){
    favorite = favorite;
}

public void FavoriteMovie(int id, boolean favorite) {
    this.id = id;
    this.favorite = favorite;
}

Попытка запроса перед выполнением вставки

db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").allowMainThreadQueries().build();
if (db.favoriteMovieDao().findById(classId) == null) {
    FavoriteMovie fm = new FavoriteMovie();
    fm.setId(classId);
    fm.setFavorite(true);
    db.favoriteMovieDao().insert(fm);
}

AppDatabase.java

@Database(entities = {FavoriteMovie.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract FavoriteMovieDao favoriteMovieDao();
}

1 Ответ

0 голосов
/ 06 июля 2018

Ваш метод setId не ссылается на поле id. Ваш параметр затеняет ваше поле. Я думаю, что вы должны использовать this.id вместо.

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