我刚开始使用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;
}
Car 本身就是一个模型。
public class Car extends RealmObject {
@PrimaryKey
private Long id;
public String model;
}
问题在于,当我尝试保存UserModel
时,它会尝试重新创建分配给它的所有对象。所以在我保存用户模型之前,我已经创建了一些Car
个对象。
我不需要创建它们,而是像SQL数据库中的外键一样引用它们。当我从数据库中检索用户时,它应该通过主键自动加载所有相关数据。
是否可以使用Realm实现此类行为?
答案 0 :(得分:0)
如果托管对象尚未存在,则应使用realm.createObject(clazz, pkValue);
创建托管对象,然后将其设置为值或将其添加到您获得另一个托管对象的RealmList中。
您还可以使用copyToRealmOrUpdate()
从非托管对象创建托管对象(如果对象具有主键)。
当我从数据库中检索用户时,它应该按主键自动加载所有相关数据。
RealmList允许访问相关对象,实际上,也可以通过调用.where()
来查询它。但是,这不是基于主键。该功能在&#34;计算字段&#34;下跟踪。
答案 1 :(得分:0)
感谢您的帮助。使用copyToRealmOrUpdate
方法而非copyToRealm
解决了此问题。