2015-11-13 61 views
0

我在當前的應用程序中使用領域,我想更新我的應用程序。現在,如果您在應用程序中使用數據庫來保存一些值,則此過程需要migrating of tables以及新的實體和模式。領域 - 列類型不是vaid

我的問題在於,我在遷移時遇到了一些問題,因爲這些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); 

我不確定究竟是什麼樣的列類型,如果它只是包裝模型中的對象。

如果你想添加到另一個RealmObject參考,我會很感激任何形式的幫助這裏..在此先感謝:)

回答

1

,它被稱爲鏈接:

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