3
レルム移行スクリプトで新しいプライマリキーを使用して古いプライマリキーを変更できますか?Android:レルム移行で古いプライマリキーを変更
レルム移行スクリプトで新しいプライマリキーを使用して古いプライマリキーを変更できますか?Android:レルム移行で古いプライマリキーを変更
はい、可能です。値は、あなたが作成上の制約に違反することがありますを意味し、データベースに0に初期化されているので
RealmObjectSchema objectSchema = schema.get("MyObject");
objectSchema.addField("newId", long.class)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.setLong("newId", getNewId(obj));
}
})
.removeField("id")
.renameField("newId", "id")
.addPrimaryKey("id");
ただし、直接
objectSchema.addField("newId", long.class, FieldAttribute.PRIMARY_KEY)
としてフィールドを作成することはできません。したがって、値が設定された後でのみ、主キー制約を追加する必要があります。あなたのケースでは
、
RealmObjectSchema objectSchema = schema.get("MyObject");
objectSchema.addField("newId", long.class)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.setLong("newId", getNewId(obj));
}
})
.removePrimaryKey()
.addPrimaryKey("newId");
は、既存のフィールドを削除する必要はありません。古いプライマリキー制約を削除して、プライマリキー制約のある新しいフィールドを追加したい –
あまりにも機能します – EpicPandaForce