Как исключить класс модели Realm из определенного файла Realm в схеме БД? - PullRequest
0 голосов
/ 16 ноября 2018

Realm версия:

classpath "io.realm:realm-gradle-plugin:5.8.0"

I обнаружил, что Я должен добавить модули к io.realm.RealmConfiguration. Итак, я сделал это:

RealmConfiguration.Builder builder = new RealmConfiguration.Builder()
            .deleteRealmIfMigrationNeeded()
            .schemaVersion(1)
            .encryptionKey(/*my encryption key*/)
            .name("pay_card.realm");

        builder.addModule(new RPayCardRealmModule());

    return Realm.getInstance(builder.build());

RPayCardRealmModule.class

@RealmModule(library = true,classes = {
        RPayCard.class
})
public class RPayCardRealmModule {
}

RPayCard.class

@lombok.Getter
@lombok.Setter
@lombok.ToString(includeFieldNames = false)
@lombok.Builder
@lombok.AllArgsConstructor
@lombok.NoArgsConstructor
@lombok.EqualsAndHashCode(of = "id")
public class RPayCard extends RealmObject {
    @io.realm.annotations.PrimaryKey
    @io.realm.annotations.Required
    String id;

    private String billNumber;
    private String cardNumber;
    private String cardExpirationDate;
    private String cardType;
    private String cardHolderName;
    private boolean selected;

}

Но когда я смотрю в файл базы данных "pay_card.realm".

Похоже, что так. Почему другие классы добавляются в схему БД? Как их исключить? enter image description here

1 Ответ

0 голосов
/ 16 ноября 2018

С RealmModule документация

Поведение Realms по умолчанию заключается в автоматическом создании RealmModule с именем DefaultRealmModule, который содержит все классы, расширяющие RealmObject в проекте. Этот модуль автоматически известен Царством.

Из builder.addModule() документация

FIXME: Временный видимый метод DEBUG. Будем добавлять модуль безоговорочно. Добавляет модуль в уже определенные модули.

С RealmConfiguration.Builder modules документация

Заменяет существующие модули на один или несколько модулей RealmModules. Использование этого метода заменит текущую схему для этого Области схемой, определенной предоставленными модулями. Ссылка на модуль Realm по умолчанию, содержащий все классы Realm в проекте (но не зависимости), может быть найдена с помощью Realm.getDefaultModule (). Таким образом, объединение схемы из проекта приложения и зависимости библиотеки выполняется с использованием следующего кода: builder.modules(Realm.getDefaultMode(), new MyLibraryModule());

TLDR; Вы должны использовать RealmConfiguration.Builder.modules(), чтобы сначала очистить список модулей builder.addModule(new RPayCardRealmModule())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...