如何查询 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 完整性不变。