我将Room用作项目的本地数据库。我创建了一个MovieDao
界面:
@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:尝试从空对象引用上的字段'java.lang.String com.example.myapp.Movies $ Movie.title'中读取
答案 0 :(得分:-1)
id可能由房间保留。您可以使用@PrimaryKey(autoGenerate = true)设置自动递增的PK,然后定义自己的ID(movie_id),您可以设置该ID并随意获取,同时保持PK完整性不变。