如何从数据库方案中的特定Realm文件中排除Realm模型类?

时间:2018-11-16 08:00:56

标签: java android realm

领域版本:

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

found that应该将模块添加到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 :(得分:2)

来自RealmModule documentation

  

领域的默认行为是自动创建一个名为RealmModule的{​​{1}},其中包含项目中扩展了DefaultRealmModule的所有类。 Realm自动知道此模块。

来自builder.addModule() documentation

  

FIXME:临时可见的DEBUG方法。将无条件添加模块。将模块添加到已定义的模块中。

来自RealmConfiguration.Builder modules documentation

  

用一个或多个RealmModule替换现有模块。使用此方法将使用提供的模块定义的架构替换该领域的当前架构。   可以使用Realm.getDefaultModule()找到对默认Realm模块的引用,该模块包含项目中的所有Realm类(但不包含依赖项)。因此,使用以下代码将来自应用程序项目的架构与库依赖项进行组合:   RealmObject

TLDR;您应该首先使用builder.modules(Realm.getDefaultMode(), new MyLibraryModule());来清除模块列表,而不要使用RealmConfiguration.Builder.modules()