Как запросить базу данных Room, чтобы она возвращала один объект? - PullRequest
0 голосов
/ 31 января 2019

Я использую 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) и передаю идентификатор, которыйсуществует точно в базе данных, я всегда получаю 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' нассылка на нулевой объект

1 Ответ

0 голосов
/ 31 января 2019

идентификатор может быть зарезервирован по комнате.Вы можете установить автоматическое увеличение PK с помощью @PrimaryKey (autoGenerate = true), а затем определить свой собственный идентификатор (movie_id), который вы можете установить и получить по своему желанию, оставив целостность PK без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...