Android 如何删除域中的多对多数据库

Android 如何删除域中的多对多数据库,android,realm,Android,Realm,这是我试过的 public class AppInfo extends RealmObject { public String packageName; public RealmList<CategoryInfo> categoryList; } public class CategoryInfo extends RealmObject { public String categoryName; } 但是代码不能删除categoryName。而不是

这是我试过的

public class AppInfo extends RealmObject {
    public String packageName;

    public RealmList<CategoryInfo> categoryList;
}

public class CategoryInfo extends RealmObject { 
    public String categoryName;
}
但是代码不能删除categoryName。

而不是

 AppInfo result = realm.where(AppInfo.class).equalTo("packageName",info.getPackageName()).findFirst();

result.categoryList.remove(category);
result.categoryList.remove(category);
你应该这样做

result.categoryList.where().equalTo("categoryName", category).findAll().deleteAllFromRealm();

使用Realm 3.4.0,您还可以

public class AppInfo extends RealmObject {
    public String packageName;

    public RealmList<CategoryInfo> categoryList;
}

public class CategoryInfo extends RealmObject { 
    public String categoryName;

    @LinkingObjects("categoryList")
    public final RealmResults<AppInfo> appInfos = null;
}
realm.where(CategoryInfo.class)
         .equalTo("appInfos.packageName", packageName)
         .equalTo("categoryName", category)
         .findAll()
         .deleteFromRealm();