使用新的3.4.0领域版本,我们可以通过@LinkingObject获得自动回复链接,但是,有没有办法让这些反向链接处于非托管状态?反向链接领域结果是空的
答案 0 :(得分:0)
考虑到您需要将反向链接定义为
@LinkingObjects("linkingObjectsField")
private final RealmResults<OtherObject> backlink = null;
并且realm.copyFromRealm()
忽略反向链接,非托管对象不能设置反向链接字段。通常,您不需要访问分离对象中的反向链接。
所以可能的解决方法是
@LinkingObjects("linkingObjectsField")
private final RealmResults<OtherObject> backlink = null;
@Ignore
private List<OtherObject> unmanagedBacklink = Collections.emptyList();
public <T extends List<OtherObject>> T getBacklinkObjects() {
if(isManaged()) {
// noinspection unchecked
return (T)backlink; // <-- so that this can be obtained as RealmResults<T>
} else {
// noinspection unchecked
return (T)unmanagedBacklink;
}
}
您可以在realm.copyFromRealm(obj.getBacklink());
的托管实例上手动复制obj
的反向链接。
或者只是使用托管对象,考虑到我没有看到需要非托管反向链接的用例(除了可能通过GSON发送它们,但即便如此,我通常建议使用显式DTO类)。