簡體   English   中英

從Realm中刪除多項關系中的項目

[英]Remove item from Realm many to many relationships

我有兩個班,Trip和TravelStamp。 旅行有很多TravelStamps,TravelStamps有很多旅行。

他們是這樣宣布的。

public class Travelstamp extends RealmObject{
@PrimaryKey
private int id;
private Date timestamp;
private double lat;
private double lon;
private boolean sync;
private Date syncDate;
// getters and setters //
...
}


public class Trip extends RealmObject {

@PrimaryKey
private String id;
private String name;
private Date start;
private Date end;
private RealmList<TravelStamp> stamps;
//getters and setters
...
}

我想要做的是從Realm移除一次旅行。 在TravelStamp與任何其他旅行沒有關聯的情況下,我還想刪除與該旅行相關的任何TravelStamp。 我如何能夠找出與單個TravelStamp對象相關的Trips?

您正在尋找的是級聯刪除。 它尚未在Realm中實現,但這里有一個問題,有一些可能的解決方法: https//github.com/realm/realm-java/issues/2717

一個簡單的選擇是實現自己的刪除方法,如下所示:

public class Trip extends RealmObject {
  public RealmList< TravelStamp > stamps;
  ...

  public void cascadeDelete(Realm realm) {
    List<TravelStamp> stampsToDelete = new ArrayList<>();
    for (TravelStamp stamp : stamp) {
      if (realm.where(Travel.class).equalTo("stamps.id", stamp.getId()).count() == 1) {
        stampsToDelete.add(stamp);
      }
    }
    for (TravelStamp stamp : stampsToDelete) {
      stamp.deleteFromRealm();
    }
    deleteFromRealm(); // delete this object
  }  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM