我将 Room 用作项目的本地数据库。我创建了一个 MovieDao
接口(interface):
@Dao
public interface MovieDao {
@Query("SELECT * FROM movies ORDER BY title ASC")
LiveData<List<Movies.Movie>> getMovies();
@Query("SELECT * FROM movies WHERE id = :id")
LiveData<Movies.Movie> getMovie(int id);
}
每次我尝试调用 getMovies()
方法时,它都会正确返回一个 Movie
对象列表,但是如果我调用 getMovie(int id)
并传递一个肯定存在于数据库中的 ID,我总是得到 NPE。
我能否创建一个可以返回单个 Movie
对象的查询?
谢谢!
编辑:
LiveData<Movies.Movie> liveData = movieRepository.retrieveFavoriteMovieTask(550);
liveData.observe(this, m -> {
Log.d(TAG, m.title);
});
错误:
java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.example.myapp.Movies$Movie.title' on a null object reference
最佳答案
id 可以按房间保留。您可以使用 @PrimaryKey(autoGenerate = true) 设置一个自动递增的 PK,然后定义您自己的 id (movie_id),您可以随意设置和获取它,同时保持 PK 完整性不变。
关于android - 如何查询 Room 数据库以使其返回单个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54468203/