尽管使用 realm.beginTransaction() 获取 illegalStateException
Getting illegalStateException inspite using realm.beginTransaction()
我在修改我的模型时遇到此错误-
java.lang.IllegalStateException: Changing Realm data can only be done from inside a transaction.
这是我的代码 -
Realm realm = ProjectUtil.getRealmWithConfiguration(mActivity);
realm.beginTransaction();
if (something) {
wordModel.setSomething(something);
} else {
wordModel.setSomething(false);
}
realm.commitTransaction();
您的 RealmObject
很可能与给定的领域实例无关,并且可能与不同的领域实例相关联。你如何获得你的 wordModel
对象?如果你像这样创建它 WordModel wordModel = new WordModel();
那么你应该使用 realm.copyToRealmOrUpdate(wordModel)
方法将它复制到领域。
我在多次阅读领域 documentation 后找到了答案。事实证明,您无法在每次创建 Realm
实例时都构建 RealmConfiguration
。而是在您的应用程序 class 中设置默认配置,例如 -
RealmConfiguration config = new RealmConfiguration.Builder(context)
.name("realmFile.realm")
.encryptionKey("yourKey".getBytes())
.migration(new Migration())
.build();
Realm.setDefaultConfiguration(config);
并且每次你想创建一个 Realm Instance 调用 -
Realm.getDefaultInstance()
我在修改我的模型时遇到此错误-
java.lang.IllegalStateException: Changing Realm data can only be done from inside a transaction.
这是我的代码 -
Realm realm = ProjectUtil.getRealmWithConfiguration(mActivity);
realm.beginTransaction();
if (something) {
wordModel.setSomething(something);
} else {
wordModel.setSomething(false);
}
realm.commitTransaction();
您的 RealmObject
很可能与给定的领域实例无关,并且可能与不同的领域实例相关联。你如何获得你的 wordModel
对象?如果你像这样创建它 WordModel wordModel = new WordModel();
那么你应该使用 realm.copyToRealmOrUpdate(wordModel)
方法将它复制到领域。
我在多次阅读领域 documentation 后找到了答案。事实证明,您无法在每次创建 Realm
实例时都构建 RealmConfiguration
。而是在您的应用程序 class 中设置默认配置,例如 -
RealmConfiguration config = new RealmConfiguration.Builder(context)
.name("realmFile.realm")
.encryptionKey("yourKey".getBytes())
.migration(new Migration())
.build();
Realm.setDefaultConfiguration(config);
并且每次你想创建一个 Realm Instance 调用 -
Realm.getDefaultInstance()