保存链接对象的主键值已经存在的关系
问题描述:
我刚开始使用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
解决了此问题。