Во время миграции Realm на Android я пытаюсь прописать существующее поле 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");
Кажется, это работает как ожидалось.
Есть ли проблемы, связанные с этим подходом?