我有 2 个领域对象:单元和子单元。单元对象具有子单元的领域列表。我使用单个单位对象。定期创建一个新的子单元对象并将其添加到 Unit 的列表中,然后我在 Unit 对象上调用 copyToRealmOrUpdate。但是,每次我调用 copyToRealmOrUpdate 时,Unit 包含的所有子单元都会再次复制,即使它们已经存在于数据库中。这会导致我的数据库大小迅速增长。有没有办法只保存每次保存单位对象时添加到列表中的最后一个子单位?谢谢
尝试以下代码来创建新的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
实例直接放入查询对象时创建对象。
- 创建一个
Unit
-Object并将其与copyToRealmOrUpdate
一起保存在数据库中。 - 创建新
Subunit
时,将他保存在数据库中copyToRealmOrUpdate
。 - 然后,您可以调用已保存在数据库中
Unit
-Object,并通过Unit.getSubunits().add(Subunit)
将数据库中保存的Subunit
添加到数据库中保存的Unit
。
您不需要在数据库中多次保存Unit
。