Установить значение для объекта области

У меня есть следующий класс

public class Student extends RealmObject{ private int studentID; private String studentName; // getters and setters here } 

Затем я пытаюсь установить значение для уже созданного объекта студента

 student.setStudentName("Peter"); 

Затем я получаю следующую ошибку

Java.lang.IllegalStateException: вызов метода Mutable во время транзакции чтения.

Чтобы преодолеть это, я должен сделать это следующим образом

 Realm realm = Realm.getInstance(this); realm.beginTransaction(); student.setStudentName("Peter"); realm.commitTransaction(); 

Я не хочу сохранять это изменение в базе данных. Как я могу просто установить / изменить значение для переменной объекта realm, не сохраняя ее всегда в базе данных?

Solutions Collecting From Web of "Установить значение для объекта области"

Когда вы используете Realm.createObject() , объект добавляется в Realm, и он работает только в транзакции записи. Вы можете отменить транзакцию и тем самым отказаться от объекта.

Кроме того, вы можете использовать свой модельный класс как отдельный класс и создавать объекты в памяти (подробности см. В http://realm.io/docs/java/0.80.0/#creating-objects ). Если вам нужно сохранить объекты, вы можете использовать метод Realm.copyToRealm() .

Если вы хотите изменить объект в режиме, который не поддерживается, вам нужна неуправляемая копия.

Вы можете создать копию, используя realm.copyFromRealm(RealmObject realmObject); метод.

Вы можете использовать realm.cancelTransaction(); , Вместо realm.commitTransaction();

U может захотеть создать новую модель. И новая модель ur должна реализовать RealmModel .

 public class StudentRM extends RealmModel{ private int studentID; private String studentName; // Constructors here // getters and setters here } 

Теперь U может это сделать.

 studentRm.setStudentName("Peter"); //Setting Vale Or studentRm.addAll(student); //Add all value from DB studentRm.setStudentName("Jhon"); //It won't change DB anymore studentRm.getStudentName(); // "Jhon"