0

在以前的 RealmDB 中,我的程序表如下:

public class Program extends RealmObject {
    @Expose
    @SerializedName("episodes")
    @ParcelPropertyConverter(RealmListParcelConverter.class)
    public RealmList<Episode> episodes;

    @Expose
    @SerializedName("performers")
    @Ignore
    public List<Performer> performers;
}    

和表演者表:

public class Performer {

    @Expose
    @SerializedName("id")
    public Long id;

    @Expose
    @SerializedName("name")
    public String name;

}

在新版本中,我想将 performers 属性添加到数据库中。所以我像这样实现了迁移:
在 MyApplication 中:

private void initRealm() {
        Realm.init(this);
        RealmConfiguration config = new RealmConfiguration
                .Builder()
                .schemaVersion(1)
                .migration(new OnsMigration())
                .build();
        Realm.setDefaultConfiguration(config);
    }

和 OnsMigration 类:

public class OnsMigration implements RealmMigration {
    @Override
    public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
        if (newVersion == 1) {
            RealmSchema schema = realm.getSchema();
            RealmObjectSchema performerSchema = schema.create("Performer")
                    .addField("id", Long.class)
                    .addField("name", String.class)
            RealmObjectSchema programSchema = schema.get("Program");
            programSchema.addRealmListField("performers", performerSchema);
        }
    }
}

但 program.getPerformers() 仍然为 Null。
如何正确自定义迁移?
谢谢

4

0 回答 0