Ничего не работает Realm Migration [Android 1.2]

Я обновил до последней версии, надеясь, что это решит мою проблему, но это не так. я использую

  RealmConfiguration config = new RealmConfiguration.Builder(this)
            .name("myrealm.realm")
           .migration(new Migration())
            .schemaVersion(2) // 2
            .build();
    try {
        Realm realm = Realm.getInstance(config); // Automatically run migration if needed
        realm.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    Realm.setDefaultConfiguration(config);

Этот код для обновления и добавления нескольких новых объектов. Вот моя миграция

public class Migration implements RealmMigration {
@Override
public void migrate(final DynamicRealm realm, long oldVersion, long newVersion) {
    // Access the Realm schema in order to create, modify or delete classes and their fields.
    RealmSchema schema = realm.getSchema();
    // Migrate from version 1 to version 2
    if (oldVersion == 1) {
        // Create a new classes
        RealmObjectSchema styleSchema = schema.create("SavedStyle").addField("title", String.class).addField("json", String.class);
        RealmObjectSchema dictSchema = schema.create("SavedDictionary").addField("title", String.class).addField("dictionary", String.class);
        RealmObjectSchema journalSchema = schema.create("CustomJournal").addField("title", String.class).addField("json", String.class);
        oldVersion++;
    }
    if (oldVersion < newVersion) {
        throw new IllegalStateException(String.format("Migration missing from v%d to v%d", oldVersion, newVersion));
    }
}

}

Я получаю ошибку

java.lang.IllegalArgumentException: Configurations cannot be different if used to open the same file. The most likely cause is that equals() and hashCode() are not overridden in the migration class: otherClasses.Migration

При попытке запустить его в автономном режиме без обновления даже с предыдущей версии. Не совсем уверен, что делать дальше. Действительно нужно, чтобы он работал, поэтому мне не нужно стирать все данные. Думал о том, чтобы сделать более формальный отчет об ошибках, но хотел проверить, знает ли кто-нибудь еще, существует ли решение в первую очередь. Эта проблема возникает всякий раз, когда я пытаюсь получить конфигурацию по умолчанию. Обычно это работает, когда я впервые открываю приложение, но затем вылетает, когда я перехожу к следующему действию

1 ответ

Я бы сказал, что сообщение об ошибке является довольно конкретным, и оно говорит, что вы должны сделать следующее

public class Migration implements RealmMigration {
    @Override
    public void migrate(final DynamicRealm realm, long oldVersion, long newVersion) {
        //...
    }

    @Override
    public boolean equals(Object object) {
         return object != null && object instanceof Migration;
    }

    @Override
    public int hashCode() {
         return Migration.class.hashCode();
    }
}
Другие вопросы по тегам