保存链接对象的主键值已经存在的关系

保存链接对象的主键值已经存在的关系

问题描述:

我刚开始使用RealmDB并不能弄清楚如何正确保存链接对象,实施了几分foreign key保存链接对象的主键值已经存在的关系

这里是我的主要User模型。

public class UserModel extends RealmObject { 
    @PrimaryKey 
    public Long id; 
    public String firstName; 
    public String lastName; 
    public UserSettings userSettingsModel; 
} 

UserSettings模型定义如下。

public class UserSettingsModel extends RealmObject { 
    @PrimaryKey 
    private Long id; 
    public String email; 
    public RealmList<Car> cars; 
} 

而且汽车是模型本身。

public class Car extends RealmObject { 
    @PrimaryKey 
    private Long id; 
    public String model; 
} 

的问题是,当我试图挽救UserModel它试图重新分配给它的所有对象。所以在我保存用户模型之前,我已经创建了一些Car对象。

我不需要创建它们,而是像引用SQL数据库中的外键一样。当我从数据库中检索用户时,它应该通过主键自动加载所有相关数据。

使用Realm可以实现这种行为吗?

如果它还不存在,则应使用realm.createObject(clazz, pkValue);创建一个托管对象,然后将其设置为值或将其添加到RealmList中,以获得另一个托管对象。

您还可以使用copyToRealmOrUpdate()(如果对象具有主键)从非托管对象创建托管对象。

而当我从数据库检索用户时,它应该自动加载所有相关数据的主键。

RealmList允许访问相关的对象,实际上,也可以通过调用.where()来查询。但是,这不是基于主键。该功能在“计算字段”下进行跟踪。

感谢您的帮助。通过使用copyToRealmOrUpdate方法而不是copyToRealm解决了此问题。