【问题标题】:Android Realm.io - Removing sub-objectsAndroid Realm.io - 删除子对象
【发布时间】:2016-01-10 15:35:43
【问题描述】:

假设我有一个看起来像这样的领域对象结构 -

public class Person extends RealmObject {

   @PrimaryKey
   private int id;

   private String name;

   private List<Pet> pets

   // Setters, getters...
}

public class Pet extends RealmObject {

    private String name;

    private MedicalRecord record;

    // Setters, getters...

}

public class MedicalRecord extends RealmObject {

    private String something;

    private String somethingElse;

    // Setters, getters...

}

现在我收到了一个带有现有 id(主键)的新 Person 对象,我想更新这个人。 所以我做这样的事情 -

    realm.beginTransaction();
    realm.copyToRealmOrUpdate(person);
    realm.commitTransaction();

问题是这个人的宠物清单(和宠物的医疗记录)仍然在数据库中。不再与此人关联,但仍然存在。

我试图这样做 -

Person existingPerson = realm.where(Person .class).equalTo("id", ID).findFirst();
existingPerson.getPets().clear();

但那里没有成功。如何删除 realmObjects 的子对象?

另外,有没有办法为领域对象定义策略,以便在没有引用它时将自己删除(它没有链接到任何父对象)?

【问题讨论】:

  • 对不起,我之前误解了你的问题。目前还没有方法可以清除和删除RealmList 中的所有对象,请参阅此问题github.com/realm/realm-java/issues/1560github.com/realm/realm-java/issues/1104。目前的解决方法是删除循环中的每个对象,顺序如下: for (int i = dogs.size() - 1; i >= 0 ; i--) { dogs.get(i).removeFromRealm() ; }
  • RealmList.removeFromRealm() 即将合并,您可以在此 PR github.com/realm/realm-java/pull/2061 中查看进度
  • RealmList.removeFromRealm()已经合并到master,可以等待下一个版本或者用snapshot试试。

标签: android realm


【解决方案1】:

现在可以了,方法已从上次提交重命名为 realmList.deleteAllFromRealm()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多