如何查询 Room 数据库使其 returns 成为单个对象?
How to query a Room database so it returns a single object?
我将 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()
方法时,它都会正确 return 一个 Movie
对象的列表,但是如果我调用 getMovie(int id)
并传递一个确实存在的 ID在数据库中我总是得到 NPE。
我可以创建查询而不是 return 单个 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),您可以随意设置和获取该 ID,同时保持 PK 完整性不变。
我将 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()
方法时,它都会正确 return 一个 Movie
对象的列表,但是如果我调用 getMovie(int id)
并传递一个确实存在的 ID在数据库中我总是得到 NPE。
我可以创建查询而不是 return 单个 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),您可以随意设置和获取该 ID,同时保持 PK 完整性不变。