2

伙计们,我正在为我的数据库课程开发一个 android 项目,我正在使用领域 DB,但问题是我刚刚发现领域没有外键(领域不是关系数据库)所以我想知道是否有任何用作外键的其他解决方案?

我正在考虑使用课堂组合,但它会起作用吗?

4

1 回答 1

3

Realm 有“关系”的概念(也称为“链接”)。

一对一关系:

public class A extends RealmObject {
    B b;
}

对多关系:

public class A extends RealmObject {
    RealmList<B> bs;
}

对于这些关系中的任何一个,都存在反向关系(Realm Java 3.5.0+)

public class A extends RealmObject {
    B b;

    RealmList<B> bs;
}

public class B extends RealmObject {
    @LinkingObjects("b")
    private final RealmResults<B> fromB = null;

    @LinkingObjects("bs")
    private final RealmResults<B> fromBs = null;
}

如果一个对象是非托管的,那么insertOrUpdate()/copyToRealmOrUpdate()将把它们A和它的实例都插入B到 Realm 中。

如果一个对象是托管的,那么您设置为值的对象也必须是托管的。

A a = realm.createObject(A.class);
a.setB(realm.createObject(B.class)); // or copyToRealmOrUpdate(b) or .findFirst() etc
于 2017-11-30T20:43:06.053 回答