我目前在我的 Android 应用程序中使用 Ollie ORM。 我想做一些架构迁移。
如果我查看 this ,我的结论是我应该创建一个新类。我创建了迁移类,如下所示:
import ollie.Migration;
public class MigrateToVersionTwo extends Migration {
@Override
public int getVersion() {
return 2;
}
@Override
public String[] getStatements() {
return new String[]{
"ALTER TABLE events ADD COLUMN test INTEGER;"
};
}
}
我还将database_version从1更改为2。
但是架构没有任何改变..我错过了什么吗?
如果您需要更多信息,请查看 AdapterHolderImpl.java 类:
package ollie;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ollie.adapter.BooleanAdapter;
import ollie.adapter.CalendarAdapter;
import ollie.adapter.SqlDateAdapter;
import ollie.adapter.UtilDateAdapter;
import ollie.internal.AdapterHolder;
import ollie.internal.ModelAdapter;
public final class AdapterHolderImpl
implements AdapterHolder {
private static final List<Migration> MIGRATIONS = new ArrayList<Migration>();
private static final Map<Class<? extends Model>, ModelAdapter> MODEL_ADAPTERS = new HashMap<Class<? extends Model>, ModelAdapter>();
private static final Map<Class, TypeAdapter> TYPE_ADAPTERS = new HashMap<Class, TypeAdapter>();
static {
MODEL_ADAPTERS.put(com.me.model.SafeZoneVO.class, new ollie.SafeZoneVO$$ModelAdapter());
MODEL_ADAPTERS.put(com.me.model.EventVO.class, new ollie.EventVO$$ModelAdapter());
MODEL_ADAPTERS.put(com.me.model.ContactVO.class, new ollie.ContactVO$$ModelAdapter());
MODEL_ADAPTERS.put(com.me.model.User.class, new ollie.User$$ModelAdapter());
MODEL_ADAPTERS.put(com.me.model.Place.class, new ollie.Place$$ModelAdapter());
TYPE_ADAPTERS.put(java.util.Calendar.class, new CalendarAdapter());
TYPE_ADAPTERS.put(java.util.Date.class, new UtilDateAdapter());
TYPE_ADAPTERS.put(java.lang.Boolean.class, new BooleanAdapter());
TYPE_ADAPTERS.put(java.sql.Date.class, new SqlDateAdapter());
}
public final List<? extends Migration> getMigrations() {
return MIGRATIONS;
}
public final <T extends Model> ModelAdapter<T> getModelAdapter(Class<? extends Model> cls) {
return MODEL_ADAPTERS.get(cls);
}
public final List<? extends ModelAdapter> getModelAdapters() {
return new ArrayList(MODEL_ADAPTERS.values());
}
public final <D, S> TypeAdapter<D, S> getTypeAdapter(Class<D> cls) {
return TYPE_ADAPTERS.get(cls);
}
}
最佳答案
事实证明我必须使用最新版本(当前为0.3.2-SNAPSHOT
)。
因此,我将构建 gradle 更改为:
apt 'com.michaelpardo:ollie-compiler:0.3.2-SNAPSHOT'
compile 'com.michaelpardo:ollie:0.3.2-SNAPSHOT'
并添加了快照版本的存储库:
maven { url "https://oss.sonatype.org/content/repositories/snapshots/"}
关于android - 如何使用 Ollie 进行架构迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31811774/