gpt4 book ai didi

java - Android 房间持久性查询返回空值

转载 作者:行者123 更新时间:2023-11-29 23:47:25 25 4
gpt4 key购买 nike

我目前正在学习如何使用 Android Room Persistence 库。以下代码在尝试查询 (findById) 以获取绑定(bind)到 int (ID) 的已保存 boolean 值时遇到问题。尝试这样做时,它反复出现 null。这里有我忽略的问题吗?有人可以指出我在这里做错事的正确方向吗?谢谢。

Collection 电影道

@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);
}

应用数据库.java

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

最佳答案

您的setId 方法没有引用字段id。您的参数会影响您的领域。我认为您应该改用 this.id

关于java - Android 房间持久性查询返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51201476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com