내 영역 데이터베이스에 여러 객체를 쓰려고합니다.db에 쓰기가 연결을 저장하지 않습니다.
다른 개체 (RealmUser)와 연결되어 있으므로 RealmList<RealmActivity>
에 getActivities().addAll(activities)
을 추가합니다.
먼저이 컬렉션을 copyToRealm(activities)
을 통해 영역에 복사하지 않고 시도했지만 여기에 문제가 있습니다. 이 기능은 앱을 다시 시작하지 않는 이상 작동합니다 (다른 활동으로 돌아갈 때 이상하게도). 그렇게하는 즉시 활동은 데이터베이스에 유지되지만 더 이상 사용자와 연관되지 않습니다. realm.copyToRealmOrUpdate(user);
및 realm.insertOrUpdate(user);
(코드에서 볼 수 있듯이)을 시도했지만이 활동보다 장기간 연결을 유지하지 않습니다.
내 생각에 연관성은 실제 파일 (?)에 절대 적용되지 않으며 활동을 종료하자마자 데이터베이스의 메모리 이미지가 삭제되어 연결이 끊어지는 반면 내 실제 데이터는 실제 파일에 유지됩니다. 그렇다면 협회를 지속시키기 위해 무엇을해야합니까? beeender으로
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);
}
});
}
연결을 유지할 필요가 없습니다. 표시하는 코드는 연관을 디스크에 저장해야합니다. 'userId'는 프라이 머리 키입니까? 'copyToRealmOrUpdate()'와'insertOrUpdate'가 모두 작동해야합니다. 앱이 시작될 때 빈'activities'를 사용하여 사용자를 db로 복사합니까? 이렇게하면 사용자 객체의 빈 목록에 의해 동일한 'userId'로 사용자 객체를 덮어 씁니다. – beeender
감사합니다.이 덧글에 1000 번 이상 감사드립니다. 사실 실제로 의도하지 않은 빈 활동 목록으로 사용자를 저장했습니다! 다시 한 번 감사드립니다! – wickermoon