Комната: каково возвращаемое значение неудавшегося запроса? - PullRequest
0 голосов
/ 03 августа 2020

Рассмотрим эту небольшую базу данных Room:

@Entity
public class User {
    @PrimaryKey
    public int uid;
}

@Dao
public interface UserDao {
    @Query("SELECT * FROM user WHERE uid == :uid")
    User get(int uid);
}

Какое возвращаемое значение UserDao.get для uid, которого нет в базе данных? Могу ли я надежно проверить, что нет пользователя с заданным uid? Вот так:

if (userDao.get(17) == null) {

Или это не рекомендуется делать запросы к базе данных таким образом? Должен ли я всегда возвращать список, даже для запросов, которые могут возвращать не более одной строки базы данных? Таким образом, UserDao должно выглядеть так:

@Dao
public interface UserDao {
    @Query("SELECT * FROM user WHERE uid == :uid")
    List<User> get(int uid);
}

1 Ответ

1 голос
/ 03 августа 2020

Room возвращает null, если вы запрашиваете один объект, а его нет в БД. Итак, ваш подход в порядке, но всегда убедитесь, что вы не вызываете свою БД в основном потоке. При запросе списка возвращается список с размером 0, если подходящих объектов не найдено.

...