[英]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.