2015-10-08 3 views
0

У меня возникла проблема с Realm, которая вызывает его сбой при исключении NullPointerException каждый раз, когда я пытаюсь установить RealmObject на другой после его сохранения.Установка объекта RealmObject в другой объект RealmObject после его извлечения из Realm

Например.

Person person = new Person(); 
    person.setName("Martha"); 
    Realm realm = Realm.getInstance(this); 
    realm.beginTransaction(); 
    realm.copyToRealm(person); 
    realm.commitTransaction(); 

    Person personFromRealm = realm.where(Person.class).findFirst(); 

    realm.beginTransaction(); 
    Pet pet = new Pet(); 
    pet.setType("dog"); 
    personFromRealm.setPet(pet); <--- This line will crash 
    realm.commitTransaction(); 

Я не уверен, что еще я могу сделать, чтобы этого не произошло. Причина, по которой я должен это сделать, заключается в том, что объект Person должен быть создан в одном месте, и я хочу добавить животных в другое.

Я нашел это работает:

Realm realm = Realm.getInstance(this); 
    Person personFromRealm = realm.where(Person.class).findFirst(); 

    realm.beginTransaction(); 
    Pet pet = personFromRealm.getPet(); 
    pet.setType("dog"); 
    realm.commitTransaction(); 

Это хорошо для простых структур данных. Но я использую объекты Realm, которые содержат два или три других объекта RealmObject, и манипулирование ими, как это, кажется, представляет собой много ненужной работы.

Я просто хочу знать, не хватает ли я чего-то. Или, если есть более простой способ сделать это. Любая помощь будет принята с благодарностью.

Благодаря

ответ

2

Pet = new Pet() создаст автономный объект, который не управляется Realm еще. И это - причина аварии personFromRealm.setPet(pet). Тем не менее, сообщение об ошибке здесь не дружит вообще пользователь ...

Try:

Pet pet = new Pet(); 
pet.setType("dog"); 
pet = realm.copyToRealm(pet); 
personFromRealm.setPet(pet); 

или проще:

Pet pet = realm.createObject(Pet.class); 
pet.setType("dog"); 
personFromRealm.setPet(pet); 

Оба они должны быть в сделке.

https://github.com/realm/realm-java/issues/1558 создан для лучшего сообщения об исключении.

+0

Отлично! Спасибо. Я даже не думал об этом. Ваша помощь очень ценится. – SeanSWatkins

Смежные вопросы