@Gray 我在 SourceForge 上提交了一个 ORMLite 补丁,可以启用“其他”数据类型。补丁 ID 为 3566779。使用此补丁,可以支持 hstore。
用户需要将 PGHStore 类添加到他们的项目中。这个类的代码在这里。
用户还需要添加一个持久类,如下所示:
package com.mydomain.db.persister;
import com.mydomain.db.PGHStore;
import com.j256.ormlite.field.FieldType;
import com.j256.ormlite.field.SqlType;
import com.j256.ormlite.field.types.BaseDataType;
import com.j256.ormlite.support.DatabaseResults;
import java.sql.SQLException;
public class PGHStorePersister extends BaseDataType {
private static final PGHStorePersister singleton = new PGHStorePersister();
public static PGHStorePersister getSingleton() {
return singleton;
}
protected PGHStorePersister() {
super(SqlType.OTHER, new Class<?>[] { PGHStore.class });
}
protected PGHStorePersister(SqlType sqlType, Class<?>[] classes) {
super(sqlType, classes);
}
@Override
public Object parseDefaultString(FieldType ft, String string) throws SQLException {
return new PGHStore(string);
}
@Override
public Object resultToSqlArg(FieldType fieldType, DatabaseResults results, int columnPos) throws SQLException {
return results.getString(columnPos);
}
@Override
public Object sqlArgToJava(FieldType fieldType, Object sqlArg, int columnPos) throws SQLException {
return new PGHStore((String) sqlArg);
}
@Override
public boolean isAppropriateId() {
return false;
}
}
最后,用户需要注释他们的数据才能使用持久化器。
@DatabaseField(columnName = "myData", persisterClass=PGHStorePersister.class)