我试图将几个对象写入我的领域数据库。
当它们与另一个对象(RealmUser)相关联时,我会通过RealmList<RealmActivity>
将它们添加到getActivities().addAll(activities)
。
我试过这个,有没有先通过copyToRealm(activities)
将集合复制到领域,这就是问题所在。只要我不重启我的应用程序(或者奇怪的是,当我回到另一个活动时),这似乎有效。一旦我这样做,活动仍然存在于数据库中,但它们不再与用户相关联。我尝试了realm.copyToRealmOrUpdate(user);
和realm.insertOrUpdate(user);
(正如您在代码中看到的那样),并且它不会比此活动更长时间地保留关联。
我的猜测是,关联保存在内存中但从未提交到实际文件(?),一旦我离开活动,我的数据库的内存映像就会被删除,从而失去关联,而我的实际数据被保存到实际文件中。那么,我需要做些什么才能坚持联想呢?
try(Realm realm = Realm.getDefaultInstance())
{
realm.executeTransaction(new Realm.Transaction()
{
@Override
public void execute(Realm realm)
{
RealmUser user = realm.where(RealmUser.class).equalTo("userId", userId).findFirst();
List<RealmActivity> tmp = realm.copyToRealm(activities);
user.getActivities().addAll(tmp);
user.getVitalData().addAll(realm.copyToRealm(vitalData));
user.getDailyActivities().addAll(realm.copyToRealm(dailies));
realm.copyToRealmOrUpdate(user);
realm.insertOrUpdate(user);
}
});
}
答案 0 :(得分:1)
正如beeender已经指出的那样,我每次登录时都会使用空活动列表保存用户实例。这就是问题所在。