【问题标题】:RealmResults Query Returns Partial Results - AndroidRealmResults 查询返回部分结果 - Android
【发布时间】:2017-08-24 11:37:21
【问题描述】:

从我的 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 类型,这很好;除了现在我从上面的查询中得到部分结果!

非常感谢您在这方面的帮助!任何可以帮助我缓解此问题的想法和提示。

提前致谢!

无敌!

【问题讨论】:

  • 您在哪个线程执行查询得到不一致的结果?是在doInBackground() 还是类似的东西?围绕不一致的查询显示代码。
  • 我使用服务(确切地说是后台服务)然后在 serviceHandler 中执行代码;
  • 我没有按照 github 上的人的建议使用 realm.refresh() 进行测试然后报告
  • 我的意思是说我是testing而不是相反

标签: java android realm


【解决方案1】:

你在切换主键类型后清空数据库了吗? 你可以这样做:

Realm.deleteRealm();

我在使用 Realm 数据库时遇到了一些类似的问题。删除和创建新数据库有帮助。

【讨论】:

  • 开关已经很久了;所以不可能是这样;我什至重新安装了应用程序
  • 我明白了。我很难说可能出了什么问题。我现在唯一想到的是尝试使用 .findAllSorted() 方法的另一种变体。在您的情况下,它将是: .findAllSorted("id",Sort.ASCENDING);
  • 为什么排序标准会影响结果的数量?
  • 同样的事情我问自己蒂姆!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多