Миграция с Android Realm → java.lang.IllegalArgumentException: поле первичного ключа «foo» не может быть изменено после создания объекта - PullRequest
0 голосов
/ 08 января 2019

Во время миграции 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");

Кажется, это работает как ожидалось.

Есть ли проблемы, связанные с этим подходом?

...