写入db不会保存关联

时间:2016-10-10 16:31:18

标签: java android realm

我试图将几个对象写入我的领域数据库。

当它们与另一个对象(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);
        }
    });
}

1 个答案:

答案 0 :(得分:1)

正如beeender已经指出的那样,我每次登录时都会使用空活动列表保存用户实例。这就是问题所在。