Несколько БД областей в одном приложении - PullRequest
0 голосов
/ 27 августа 2018

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

Как я могу добавить вторую базу Realm? Два БД не зависят друг от друга. Я создал класс RealRealm, расширяющий объект области.

Следовали ниже: Область: использование одной или нескольких областей в приложении (и одной или нескольких схем)

Но я получаю:

io.realm.exceptions.RealmMigrationNeededException: Migration is required due to the following errors:
-Class 'SecondRealm' has been added
 at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method)
        at io.realm.internal.OsSharedRealm.<init>(OsSharedRealm.java:171)
        at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:241)
        at io.realm.BaseRealm.<init>(BaseRealm.java:136)
        at io.realm.BaseRealm.<init>(BaseRealm.java:105)
        at io.realm.Realm.<init>(Realm.java:164)
        at io.realm.Realm.createInstance(Realm.java:435)
        at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:342)
        at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:282)
        at io.realm.Realm.getInstance(Realm.java:364)

1 Ответ

0 голосов
/ 27 августа 2018

Realm автоматически генерирует DefaultRealmModule, который содержит каждый класс, отмеченный @RealmClass (то есть классы, расширяющие RealmObject) в текущем модуле.

Если это не та схема, которая вам нужна, вам нужно определить собственный RealmModule, описывающий схему для данного файла Realm, который вы хотите открыть, для данных RealmConfiguration.

@RealmModule(library = false, classes=[FirstRealm::class.java])
data class FirstModule(val placeholder: String) { // empty data class for equals/hashcode
    constructor(): this("")
}

@RealmModule(library = false, classes=[SecondRealm::class.java])
data class SecondModule(val placeholder: String) { // empty data class for equals/hashcode
    constructor(): this("")
}

val firstConfig = RealmConfiguration.Builder()
                      .name("first.realm")
                      .modules(FirstModule())
                      .build()

val secondConfig = RealmConfiguration.Builder()
                      .name("second.realm")
                      .modules(SecondModule())
                      .build()

val realm1 = Realm.getInstance(firstConfig)
val realm2 = Realm.getInstance(secondConfig)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...