gpt4 book ai didi

android - 从 Realm 多对多关系中删除项目

转载 作者:行者123 更新时间:2023-11-29 17:18:37 25 4
gpt4 key购买 nike

我有两个类,Trip 和 TravelStamp。 Trips 有很多 TravelStamps,TravelStamps 有很多 Trips。

它们是这样声明的。

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 对象相关联的行程?

最佳答案

您正在寻找的是级联删除。它还没有在 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
}
}

关于android - 从 Realm 多对多关系中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37622577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com