gpt4 book ai didi

java - 写入数据库不会保存关联

转载 作者:行者123 更新时间:2023-11-30 00:57:03 25 4
gpt4 key购买 nike

我正在尝试将多个对象写入我的 Realm 数据库。

因为它们与另一个对象(RealmUser)相关联,所以我将它们添加到它的 RealmList<RealmActivity> 中通过getActivities().addAll(activities) .

我尝试过先通过 copyToRealm(activities) 将集合复制到 Realm ,然后再不先将其复制到 Realm 。这就是问题所在。只要我不重新启动我的应用程序(或者,奇怪的是,当我返回另一个 Activity 时),这似乎就有效。一旦我这样做, Activity 仍然保存在数据库中,但它们不再与用户相关联。我试过 realm.copyToRealmOrUpdate(user);realm.insertOrUpdate(user); (正如您在代码中看到的那样)并且它不会比此 Activity 更长时间地保留关联。

我的猜测是,关联保存在内存中,但从未提交给实际文件(?),一旦我离开 Activity ,我的数据库的内存镜像就会被删除,从而丢失关联,而我的实际数据被保存到实际文件中。那么,我需要做什么来保持关联?

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);
}
});
}

最佳答案

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

关于java - 写入数据库不会保存关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39962766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com