在我的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的片段。然后再次切换片段后,它又变回预期的结果。