ORMLite持久器在Android中工作吗?

ORMLite持久器在Android中工作吗?,android,ormlite,Android,Ormlite,自定义持久器在Android上工作吗?我试图为一个实体编写一个,但当实体被DAO编写时,我没有运气让它运行。因此,我尝试使用示例中的MyDatePersister,但我也无法使其正常工作 持久化程序与示例程序几乎相同-> 在我的实体中,我有 @DatabaseTable public class ClickCount implements Serializable { // other declarations @DatabaseField(columnName = DATE_F

自定义持久器在Android上工作吗?我试图为一个实体编写一个,但当实体被DAO编写时,我没有运气让它运行。因此,我尝试使用示例中的MyDatePersister,但我也无法使其正常工作

持久化程序与示例程序几乎相同->

在我的实体中,我有

@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;