2017-08-24 82 views
3

从我的Realm表查询数据时出现非常奇怪的行为。RealmResults查询返回部分结果 - Android

我已经定义像这样称为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类型,在我的表的主键,直到我学会了如何糟糕,试图增加值时,被一个想法;所以我切换到这是很好的类型;除了现在我从上面的查询得到部分结果!

我会很欣赏你这个帮助!任何想法,可以帮助我缓解这个问题的提示。

在此先感谢!

Eenvincible!

+0

你在做什么线程查询哪里得到不一致的结果?它在'doInBackground()'或类似的东西吗?围绕不一致的查询显示代码。 – EpicPandaForce

+0

通讯GitHub的问题https://github.com/realm/realm-java/issues/5153 –

+0

我使用服务(后台服务是准确的),那么执行的ServiceHandler中的代码; – Eenvincible

回答

0

你有切换主键式后清除数据库? 你可以这样做:

Realm.deleteRealm(); 

我有境界数据库的一些类似的烦恼。删除和创建新的数据库帮助。

+0

交换机是一个很长的时间回来;所以不可能是这样;我甚至重新安装了应用程序 – Eenvincible

+0

我明白了。我很难说出什么可能是错的。现在唯一想到的就是尝试使用.findAllSorted()方法的另一种变体。 你的情况是: .findAllSorted(“id”,Sort.ASCENDING); – MTCZiomal

+0

为什么排序标准对结果数量有影响? –