【发布时间】:2016-04-24 05:30:31
【问题描述】:
我正在为我的下一个 Android 应用程序测试 Realm db,我想做一个简单的迁移。我看了文档有点困惑。
我有这个简单的类用户:
public class User extends RealmObject {
@PrimaryKey
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
我想(通过迁移)向表用户添加一个名为“phoneNumber”的附加字段。我不明白如何/在哪里可以启动迁移?我正在像这样的应用程序 onCreate 方法中创建架构:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this)
.schemaVersion(0)
.migration(new MyMigration())
.build();
Realm.setDefaultConfiguration(realmConfiguration);
}
}
还有我的迁移班:
public class MyMigration implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
// DynamicRealm exposes an editable schema
RealmSchema schema = realm.getSchema();
// Migrate to version 1: Add a new class.
// Example:
// public Person extends RealmObject {
// private String name;
// private int age;
// // getters and setters left out for brevity
// }
if (oldVersion == 0) {
schema.create("User")
.addField("name", String.class)
.addField("age", int.class);
oldVersion++;
}
// Migrate to version 2: Add a primary key + object references
// Example:
// public Person extends RealmObject {
// private String name;
// @PrimaryKey
// private int age;
// private Dog favoriteDog;
// private RealmList<Dog> dogs;
// // getters and setters left out for brevity
// }
if (oldVersion == 1) {
schema.get("User")
.addField("phoneNumber", long.class, FieldAttribute.REQUIRED);
oldVersion++;
}
Log.d("MainActivity","Migration happend!");
}
}
【问题讨论】:
标签: android migration database-migration realm