Realm – недействительный тип столбца

Я использую область в своем текущем приложении, и я подумал об обновлении своего приложения. Теперь этот процесс принимает migrating of tables и новые объекты и схему, если вы используете базу данных в приложении для сохранения некоторых значений.

Моя проблема здесь в том, что у меня есть некоторые проблемы с миграцией, потому что пока нет хорошей документации для миграции области, и я получаю пару ошибок, которые включают в себя error : Column type not valid.

Это мой подход к миграции:

Во-первых, вот как выглядит конфигурация области:

public class RealmHelper implements RealmMigration {

    public static final long SCHEMA_VERSION = 2; // This was the 2nd schema.
    public static final String REALM_NAME = "john.example";

    public static RealmConfiguration getRealmConfig(Context context) {
        return new RealmConfiguration.Builder(context)
                .name(REALM_NAME)
                .schemaVersion(SCHEMA_VERSION)
                .migration(new Migration())
                .build();
    }
}

Во-вторых, это класс Migration: здесь проблема.

    public class Migration implements RealmMigration {

        @Override
            public long execute(Realm realm, long version) {
              if(version == 2){
                // Issue is here. Notice the "otherModel". That is an entity in the SampleClass table.
                Table sampleTable = realm.getTable(SampleClass.class);
                sampleTable.addColumn(ColumnType.TABLE, "otherModel", true); 

               }
            }
        }

Наконец, SampleClass, который является оболочкой для фактической модели данных.

public class SampleClass extends RealmObject {

    @SerializedName("somename")
    private OtherModel otherModel;


    public OtherModel getOtherModel() {
        return otherModel;
    }

    public void setOtherModel(OtherModel otherModel) {
        this.otherModel = otherModel;
    }

}

Основываясь на текущем сценарии, я получаю сообщение об ошибке, в котором говорится, что ColumnType недействителен.

Table sampleTable = realm.getTable(SampleClass.class);
sampleTable.addColumn(ColumnType.TABLE, "otherModel", true); 

Я не уверен, что именно может быть типом столбца, если это просто объект в модели оболочки.

Я буду очень признателен за любую помощь здесь .. заранее спасибо :)


person mike20132013    schedule 13.11.2015    source источник


Ответы (1)


Если вы хотите добавить ссылку на другой RealmObject, это называется Link:

sampleTable.addColumn(ColumnType.LINK, "otherModel", realm.getTable(OtherModel.class);

Вы также можете увидеть его пример здесь: https://github.com/realm/realm-java/blob/master/examples/migrationExample/src/main/java/io/realm/examples/realmmigrationexample/model/Migration.java#L89-L89 за исключением того, что это ссылается на RealmList вместо RealmObject

person Christian Melchior    schedule 15.11.2015
comment
Понял .. спасибо за объяснение .. Действительно полезно. И да, ColumnType.LINK мне не удалось найти в документации. Спасибо.. :) - person mike20132013; 15.11.2015