如何正确保存包含RealmList的对象?

时间:2017-01-16 17:26:13

标签: java android realm

我有2个领域对象:单元和子单元。单元对象具有子单元的域列表。我使用单个Unit对象。定期创建一个新的Subunit对象并将其添加到Unit的列表中,然后在Unit对象上调用copyToRealmOrUpdate。但是,每次调用copyToRealmOrUpdate时,即使它们已存在于数据库中,也会再次复制Unit包含的所有子单元。这会导致我的数据库快速增长。 有没有办法只保存每次保存Unit对象时添加到列表中的最后一个Subunit?感谢

2 个答案:

答案 0 :(得分:1)

尝试使用此代码创建新的Subunit个实例:

realm.beginTransaction();

Unit unit = realm.where(Unit.class)
                 // write your condition for extracting of Unit object
                 .equalTo("id", unit_id).findFirst();

if(unit == null){
    Log.e(APP_TAG, "Unit " + unit_id + " not found");
    realm.cancelTransaction();
    return;
}

Subunit subunit = realm.createObject(Subunit.class);
// setup subunit fields

unit.getSubunits().add(subunit);

realm.commitTransaction();

每次需要通过特定查询从域中获取此对象并将Unit实例直接放入查询对象时,而不是创建Subunit对象。

答案 1 :(得分:0)

  1. 创建一个Unit - 对象,并将其与copyToRealmOrUpdate一起保存在数据库中。
  2. 创建新Subunit时,请将copyToRealmOrUpdate保存在数据库中。
  3. 然后,您可以调用Unit - 已保存在数据库中的对象,并使用Unit.getSubunits().add(Subunit)将数据库中已保存的Subunit添加到数据库中已保存的Unit。 / LI>

    您不需要在数据库中多次保存Unit