Android Room, похоже, дает разные результаты для одного и того же запроса в разное время, что происходит? - PullRequest
0 голосов
/ 11 июня 2019

В моем приложении для Android я использую Room как локальную базу данных, но кажется, что запросы дают другой результат после переключения с одного фрагмента на другой.

Я только что попытался найти проблему на данный момент, и, похоже, я нашел ее здесь, в моем DAO.

@Query("SELECT DISTINCT sender FROM messages_table WHERE receiver=:id and sender NOT IN (SELECT id FROM users_table WHERE id IN (SELECT DISTINCT followee FROM follows_table WHERE follower=:id) AND name LIKE '|%%' ESCAPE '|')")
    List<String> getSenderFromID(String id);

@Query("SELECT DISTINCT receiver FROM messages_table WHERE sender=:id and receiver NOT IN (SELECT id FROM users_table WHERE id IN (SELECT DISTINCT followee FROM follows_table WHERE follower=:id) AND name LIKE '|%%' ESCAPE '|')")
    List<String> getReceiverFromID(String id);

Исходя из вышеизложенного, я ожидаю всегда получать идентификаторы отправителей и получателей (сообщений), которые не связаны с пользовательскими объектами с именем, начинающимся с%. Это сделано для того, чтобы я мог отделить тех, чье имя начинается с%, от тех, у кого нет (для двух разных ListViews).

Я получаю нужный результат при первом открытии фрагмента, но когда я затем переключаюсь на другой фрагмент и возвращаюсь, он показывает как те, что с%, так и те, которые отсутствуют в том же ListView. Затем после переключения фрагментов снова возвращается к ожидаемому результату.

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