在以前的 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。
如何正确自定义迁移?
谢谢