java - 在 Realm Android 中添加初始数据

标签 java android realm

我正在使用 Realm ,在我尝试将初始数据添加到我的数据库之前,一切看起来都很好。

我遵循了这个 answer 中的例子,所以在我的类中,它继承自 Application,我有以下内容:

public class MainApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Realm.init(this);
        final Map<String, String> map = new LinkedHashMap();
        map.put("Key1", "value1");
        map.put("Key2", "value2");
        RealmConfiguration config = new RealmConfiguration.Builder().initialData(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
                int i = 1;
                for (Map.Entry entry : map.entrySet()) {
                    realm.beginTransaction();
                    Category c = realm.createObject(Category.class, i++);
                    c.setName((String) entry.getKey());
                    c.setDescription("Category #" + entry.getValue());
                    realm.commitTransaction();
                }
                realm.close();
            }
        }).deleteRealmIfMigrationNeeded().name("realm.db").build();
        Realm.setDefaultConfiguration(config);
    }
}

我认为此配置应该有效,但我收到以下错误:

java.lang.IllegalStateException: The Realm is already in a write transaction in /path/...

有什么我想念的吗?

提前致谢。

最佳答案

删除 realm.beginTransaction()realm.commitTransaction()realm.close() 调用。 public void execute(Realm realm)Realm.Transaction 类的一个方法,它将为您处理启动和提交事务:

RealmConfiguration config = new RealmConfiguration.Builder().initialData(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
                int i = 1;
                for (Map.Entry entry : map.entrySet()) {
                    Category c = realm.createObject(Category.class, i++);
                    c.setName((String) entry.getKey());
                    c.setDescription("Category #" + entry.getValue());
                }
            }
        }

关于java - 在 Realm Android 中添加初始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709188/

相关文章:

android - 带有 ArrayList 的 JNI 上的 NoSuchMethodError

android - 如何判断USB是否连接到android设备?

ios - swift Realm : can you observe when a Results object changes?

ios - 如何删除 Realm 中的对象?

java - 如何将 scala.collection.Set 转换为 java.util.Set 并在 RDD 中进行序列化

java - 是否可以使用@RequestMapping检查 header 的值

java - 是否可以通过其方法更改对象的运行时类型?

javascript - 从未压缩的原始 PNG 数据创建 PNG

ios - 在后台线程上删除 Realm 对象会阻塞主线程

java - 将 ExceptionDescribe 转换为字符串