删除相关记录 - Realm

时间:2016-05-28 08:37:32

标签: android realm

我最近开始在Android上使用Realm并且仍然试图理解它。我有以下课程 -

Class A extends RealmObject{
double count;
}

Class B extends RealmObject{
RealList<A> ListofA;
}

我想选择A的所有实例,其中count> 0。所以我构建了这个查询 -

List<A> wantedAList=return realm.where(A.class)
.greaterThan("count",0)
.findAll();

现在我想从领域删除A(与任何B相关)的所有记录,这些记录不属于wantAList。所以我这样做 -

//find all the records of A
List<A> allA=realm.where(A).findAll();
//using Google Guava to find difference of sets
Set<A> allASet= Sets.newHashSet(allA);
Set<A> wantedASet= Sets.newHashSet(wantedAList);
Set<A> unWantedlASet=Sets.difference(allASet,walntedaset);
RealmList<A> newAList=new RealmList<A>();
        A.addAll(Lists.newArrayList(unWantedlEvalUnitsSet));
        A.deleteAllFromRealm(); 

如果我在这里做正确的事,请告诉我。我在这里简化了问题。在实际代码中,wantalist由复杂的where子句组成,因此也就是这种方法。

我还想检查从域中删除newAList是否会自动使用刷新列表更新B实例?

谢谢!

1 个答案:

答案 0 :(得分:0)

1)将RealmObject添加到HashSet会有问题。见https://realm.io/docs/java/latest/#realmobjects-hashcode

2)使用RealmQuery.not()创建不需要的列表并将其删除

RealmResults<A> unwantedList = realm.where(A.class)
    .not()
    .greaterThan("count",0)
    .findAll();
unwantedList.deleteAllFromRealm();

3 {1}} RealmObject类型的A从Realm中删除后,B.ListOfA中的相应对象也会自动删除。