同步领域查询仅返回在该函数中创建的对象

时间:2019-02-21 23:58:59

标签: java database realm realm-mobile-platform

我正在尝试查询领域,但是查询中的RealmResults列表从没有正确的列表。我正在使用realm studio来查看我的数据库。将对象添加到数据库工作正常。但是由于某种原因,查询根本不起作用。例如,这是我的代码。 config是一个类变量。登录位于OnClick函数内部。

private static SyncConfiguration config;
private Realm realm;


SyncCredentials credentials = SyncCredentials.usernamePassword(loginEmail,loginPass,false);
            SyncUser.logInAsync(credentials, AUTH_URL, new SyncUser.Callback<SyncUser>() {
                @Override
                public void onSuccess(SyncUser result) {

                    user = result;
                    config = result.createConfiguration(REALM_url).build();
                    Realm.setDefaultConfiguration(config);

                    Realm.setDefaultConfiguration(config);
                    realm = Realm.getInstance(config);
                    realm.beginTransaction();
                    User user = realm.createObject(User.class, "yolo");
                    user.setEmail(loginEmail);
                    user.setPassword(loginPass);
                    realm.commitTransaction();


                    //query is for debugging
                    RealmQuery<User> query = realm.where(User.class);
                    query.equalTo("age", 0);
                    RealmResults<User> results = query.findAll();
                    realm.close();
                }

                @Override
                public void onError(ObjectServerError error) {
                    //emailText.setError("Retry Login");
                    //emailText.requestFocus();
                    Log.e("Login Error", error.toString());
                }
            });

运行该查询时,我有10个用户,所有用户的年龄均为零。返回的大小为1。如果我围绕事务进行循环,并且循环3次,结果将为3。

如果我使用完全相同的方式,使用相同的配置,在不同的函数中初始化领域,即使现在在上一次提交之后大小为10,它也会返回大小为0的列表。我完全不知道问题是什么。因为提交有效,所以我知道问题不在于URL错误。我使用的查询与文档完全相同。我完全按照他们的文档和示例进行设置。我完全不知所措。

现在还发生了这样的情况:在一个单独的函数中运行查询使我“无法评估Method抛出的表达式'java.lang.IllegalStateException”,根据其文档,findAll()不会抛出该表达式。

0 个答案:

没有答案