В настоящее время я изучаю, как использовать библиотеку 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();
}