领域版本:
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”时。
答案 0 :(得分:2)
领域的默认行为是自动创建一个名为
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()