可序列化对象的 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;
您还可以像在 线程中那样定义和注册自己的持久化器。
我在实体中添加了一个新列,例如:
@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;
您还可以像在