RealmResults查询返回部分结果 - Android

3

我将从我的Realm表中查询数据时遇到了非常奇怪的行为。

示例

我有一个名为OrderItem的对象,定义如下:

public class OrderItem extends RealmObject{

   @PrimaryKey
   @Index
   private long id;

   //the rest of the fields here
   //then getters and setters as usual
}

问题非常不可预测,因为有时候:
RealmResults<OrderItem> items = realm.where(OrderItem.class)
       .equalTo("order_id", order_id)
       .findAllSorted("id");

返回不完整的结果 - 特别是缺少1行;

这一直困扰着我,因为我无法确定它如何返回这样部分的结果; 不管表中有多少行!

一段时间以前,我在我的表中使用了String类型作为主键,直到我发现当尝试递增值时这是一个多么糟糕的想法; 因此我切换到了long类型,这很好; 除了现在我从上面的查询中得到了部分结果!

我真的很感谢你的帮助! 任何可以帮助我缓解这个问题的想法,提示。

提前致谢!

Eenvincible!


你在哪个线程执行查询时得到了不一致的结果?是在 doInBackground() 或类似的地方吗?请展示出现问题的查询周围的代码。 - EpicPandaForce
对应的 Github 问题 https://github.com/realm/realm-java/issues/5153 - Tim
我使用一个服务(确切地说是后台服务),然后在serviceHandler中执行代码。 - Eenvincible
我没有像Github上的那些人建议的那样使用realm.refresh()进行测试,然后再回报。 - Eenvincible
我想说的是我正在进行“测试”,而不是相反。 - Eenvincible
1个回答

0
你在切换主键类型后清除了数据库吗? 你可以使用以下方法进行操作:
Realm.deleteRealm();

我在使用 Realm 数据库时也遇到了类似的问题。删除并创建新的数据库可以解决问题。


开关很久以前就已经关闭了,所以不可能是那个问题;我甚至重新安装了应用程序。 - Eenvincible
我明白了。很难说出问题出在哪里。现在我想到的唯一一件事是尝试使用另一种 .findAllSorted() 方法的变体。 在你的情况下,它将是: .findAllSorted("id",Sort.ASCENDING); - FuriousSpider
排序标准为什么会影响结果数量? - Tim
我也问过自己同样的问题,Tim!! - Eenvincible

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接