ORMLite持久器在Android中工作吗?
自定义持久器在Android上工作吗?我试图为一个实体编写一个,但当实体被DAO编写时,我没有运气让它运行。因此,我尝试使用示例中的MyDatePersister,但我也无法使其正常工作 持久化程序与示例程序几乎相同-> 在我的实体中,我有ORMLite持久器在Android中工作吗?,android,ormlite,Android,Ormlite,自定义持久器在Android上工作吗?我试图为一个实体编写一个,但当实体被DAO编写时,我没有运气让它运行。因此,我尝试使用示例中的MyDatePersister,但我也无法使其正常工作 持久化程序与示例程序几乎相同-> 在我的实体中,我有 @DatabaseTable public class ClickCount implements Serializable { // other declarations @DatabaseField(columnName = DATE_F
@DatabaseTable
public class ClickCount implements Serializable {
// other declarations
@DatabaseField(columnName = DATE_FIELD_NAME, persisterClass = MyDatePersister.class)
private Date lastClickDate;
// more code
}
这里是Bitbucket->中整个项目的链接。它基本上是一个添加了自定义持久器示例的ORMLite Android示例
如有任何反馈,将不胜感激
谢谢首先,您得到的错误结果是什么 虽然我没有尝试扩展日期类型,但我的自定义持久器工作正常。下面是我发现需要的一个JSONArrayPersister。令人困惑的是方法的命名,但一旦它们设置正确,就应该可以了
package com.example.acme.persister;
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 org.json.JSONArray;
import org.json.JSONException;
import java.sql.SQLException;
public class JSONArrayPersister extends BaseDataType {
public static int DEFAULT_WIDTH = 1024;
private static final JSONArrayPersister singleTon = new JSONArrayPersister();
public static JSONArrayPersister getSingleton() {
return singleTon;
}
private JSONArrayPersister() {
super(SqlType.STRING, new Class<?>[] { String.class });
}
protected JSONArrayPersister(SqlType sqlType, Class<?>[] classes) {
super(sqlType, classes);
}
@Override
public Object parseDefaultString(FieldType fieldType, String defaultStr) {
try {
return new JSONArray(defaultStr);
} catch (JSONException ex)
{
return new JSONArray();
}
}
@Override
public Object resultToSqlArg(FieldType fieldType, DatabaseResults results, int columnPos) throws SQLException {
try {
return new JSONArray( results.getString(columnPos) );
} catch (JSONException ex)
{
return new JSONArray();
}
}
@Override
public Object resultStringToJava(FieldType fieldType, String stringValue, int columnPos) throws SQLException {
return parseDefaultString(fieldType, stringValue);
}
@Override
public int getDefaultWidth() {
return DEFAULT_WIDTH;
}
}
@DatabaseField(persisterClass = JSONArrayPersister.class)
private JSONArray something;