代码之家  ›  专栏  ›  技术社区  ›  NyanNyan

如何在领域数据库中保存数据

  •  1
  • NyanNyan  · 技术社区  · 7 年前

    如何在领域数据库中保存数据?我试着写下面的代码。我有一张4号的单子。在for循环中,我可以查看此列表中的所有数据,然后执行此方法-copyToRealmOrUpdate。

    因此,如果我想检查数据库的大小,我只会看到1的大小,而不会看到4的大小。

    更有趣的是,我在另一个类中使用了这段代码,它工作得很好。有什么问题?我禁用了迁移,重写了代码,但我仍然不知道还能做什么。

    try {
                realm = Realm.getDefaultInstance();
                if (entityList.size() > 0) {
                    realm.executeTransaction(r -> {
                        Log.d(LOGS, "SIze Entity list: " + entityList.size());
                        for (int i = 0; i < entityList.size(); i++) {
                            DbRealm db = new DbRealm();
                            db.setFromEntity(entityList.get(i));
                            Log.d(LOGS, "entityList.get(i): " + entityList.get(i));
                            Log.d(LOGS, "File: " + entityList.get(i).getFiles());
                            Log.d(LOGS, "Comment: " + entityList.get(i).getComment());
                            Log.d(LOGS, "Date: " + entityList.get(i).getDate());
                            r.copyToRealmOrUpdate(db);
                        }
                    });
                    Log.d(LOGS, "Check FindAll: " + String.valueOf(realm.where(DbRealm.class).findAll().size()));
                }
            } finally {
                if (realm != null) {
                    realm.close();
                }
            }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   JaFer    7 年前

    如果您看到 Realm documentation 说明如下:

    更新由相同PrimaryKey标识的现有RealmObject,如果找不到现有对象,则创建新副本。

    在您的情况下,PrimaryKey是相同的,因此领域会更新数据,而不是创建新数据。

    因此,我建议您在DbRealm对象中创建 PrimaryKey variable 例如,您可以使用“i”变量,尽管我不建议您这样做,但要尝试并确定它是您可以使用的解决方案。