我有2个领域对象:单元和子单元。单元对象具有子单元的域列表。我使用单个Unit对象。定期创建一个新的Subunit对象并将其添加到Unit的列表中,然后在Unit对象上调用copyToRealmOrUpdate。但是,每次调用copyToRealmOrUpdate时,即使它们已存在于数据库中,也会再次复制Unit包含的所有子单元。这会导致我的数据库快速增长。 有没有办法只保存每次保存Unit对象时添加到列表中的最后一个Subunit?感谢
答案 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)
Unit
- 对象,并将其与copyToRealmOrUpdate
一起保存在数据库中。Subunit
时,请将copyToRealmOrUpdate
保存在数据库中。Unit
- 已保存在数据库中的对象,并使用Unit.getSubunits().add(Subunit)
将数据库中已保存的Subunit
添加到数据库中已保存的Unit
。 / LI>
醇>
您不需要在数据库中多次保存Unit
。