Android Room似乎在不同时间对同一查询给出不同的结果,这是怎么回事?

时间:2019-06-11 18:44:42

标签: android sqlite android-room

在我的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);

从上面的内容中,我希望总是获得与消息的发送者和接收者的ID无关的消息,这些消息的发送者和接收者的ID与以%开头的用户实体无关。这样一来,我就可以将名称以%开头的名称与不包含名称的名称(对于两个不同的ListView)分开。

当我第一次打开片段时,我得到了想要的结果,但是当我切换到另一个片段并返回时,它同时显示了具有%的片段和没有相同ListView的片段。然后再次切换片段后,它又变回预期的结果。

0 个答案:

没有答案