可序列化对象的 ORMLite 查询字符串

ORMLite query string for serializable object

我在实体中添加了一个新列,例如:

@DatabaseField(persisterClass = SerializableType.class)
Account account;

table 已在之前的应用程序版本中创建。所以在 OrmLiteSqliteOpenHelper 中,我必须在函数内执行一个查询字符串:

@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
    try {
        if (oldVersion < 2) {
            String userTable = DatabaseTableConfig.extractTableName(User.class);
            getDao(User.class).executeRaw("ALTER TABLE `" + userTable + "` ADD COLUMN account SERIALIZABLE;");
        }
    } catch (SQLException e) {

    }
}

查询字符串应该是什么?查询字符串 alter table xyz add column abc serializable 是否正确?或者是否有任何其他可能的方法在现有 table 中添加可序列化对象?

OrmLite 将可序列化对象持久化为 SQL 类型 VARBINARY。这是一种特殊类型,它将对象序列化为字节序列,然后 de-serializes 在返回的过程中将其序列化。该字段必须是实现 java.io.Serializable 接口的对象。根据数据库类型,可以存储的对象的大小会有限制

注意:要使用此类型,您必须使用数据类型字段指定 DataType.SERIALIZABLE。不会是auto-detected。请参阅数据库字段数据类型。

// account is an object that implements Serializable
@DatabaseField(dataType = DataType.SERIALIZABLE)
Account account;

您还可以像在 线程中那样定义和注册自己的持久化器。