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

标签 java android realm

我有 2 个 Realm 对象:Unit 和 Subunit。单元对象具有子单元的 Realm 列表。我使用单个 Unit 对象。定期创建一个新的 Subunit 对象并将其添加到 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();

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

关于java - 如何正确保存包含RealmList的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41681819/

相关文章:

java - ReadyStatement 将没有时间信息的 java.util.Date 和 java.sql.Date 设置为 Mysql dateTime 列

android - Dagger2 错误 : Module Must Be Set

android - 如何创建类似于 instagram 的浏览选项卡的选项卡 View (类别)

swift - 将 Realm 的 List<MyType> 转换为普通集合或数组

security - Tomcat 7.11 JDBCRealm 和 UserDatabaseRealm 不能一起工作

java - 无法为 JDK 设置路径

java - StartSwing Gui 并不总是可见

java - 这符合递归的条件吗?

android - org.xml.sax.SAXParseException android studio gradle错误

ios - 更新具有主键的 Realm 对象