2015-11-13 2 views
0

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

Моя проблема здесь в том, что у меня возникают некоторые проблемы с миграцией, потому что theres не является хорошей документацией для миграции Realm, но я получаю пару ошибок, которые включают в себя 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(); 
    } 
} 

Во-вторых, это класс миграции: Это где выпуск есть.

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); 

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

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

ответ

1

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

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

+0

Получил это. Спасибо за объяснение .. Действительно полезно. И да, ColumnType.LINK был тем, что мне не удалось найти в документах. Спасибо.. :) – mike20132013