在Android上进行Realm迁移期间,我试图将现有的String字段大写,但由于该字段是主键,因此出现以下错误。
java.lang.IllegalArgumentException: Primary key field 'foo' cannot be changed after object was created.
以下是我现有的代码。
schema.get("FooEntity")
.transform(entity -> {
final String fieldValue = entity.getString("foo");
entity.setString("foo", fieldValue.toUpperCase(Locale.US));
});
我要解决的迁移问题的方法是:首先删除主键;然后删除主键。然后转换字段值;最后重新添加主键。
schema.get("FooEntity")
.removePrimaryKey()
.transform(entity -> {
final String fieldValue = entity.getString("foo");
entity.setString("foo", fieldValue.toUpperCase(Locale.US));
})
.addPrimaryKey("foo");
这似乎按预期工作。
此方法是否有任何问题?