android - 如何使用 Ollie 进行架构迁移?

标签 android orm

我目前在我的 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/

相关文章:

android - 如何设置弹出菜单的位置?

java - 字符串到 Java 类

android - 如何在安卓模拟器中截屏

database - 使用 Prisma 时是否应该指定 PostgreSQL 字段的大小?

mysql - 外部右连接在 NHibernate 中不起作用

android - 当 NestedScrollView 为空时停止 AppBarLayout 滚动屏幕

java - Android - 从 ArrayList 中删除项目

python - 使用 Linux 编写的 Windows GUI 实现数据库应用程序

java - JPA 是适合这种场景的 ORM 吗?

sql-server - 有什么方法可以在 LLBLGen 中进行插入或更新/合并/更新插入