我无法使用 Ormlite 从 sqlite 数据库检索数据?

I can't retrieve data from sqlite db using Ormlite?

我的模型有一个 java.sql.Date 变量,我可以很好地保存。

但每当我尝试检索一行时,它都会抛出此错误:

Caused by: java.lang.IllegalArgumentException: field model.date_time_created has type
    java.sql.Date, got java.util.Date
        at java.lang.reflect.Field.set(Native Method)
        at java.lang.reflect.Field.set(Field.java:557)
        at com.j256.ormlite.field.FieldType.assignField(FieldType.java:576)
        at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:71)
        at com.j256.ormlite.stmt.SelectIterator.getCurrent(SelectIterator.java:270)
        at com.j256.ormlite.stmt.SelectIterator.nextThrow(SelectIterator.java:161)
        at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:202)
        at com.j256.ormlite.stmt.StatementExecutor.queryForAll(StatementExecutor.java:118)
        at com.j256.ormlite.dao.BaseDaoImpl.queryForAll(BaseDaoImpl.java:241)

我获取列表的方法:

public List<Model> getModelList() {
    try {
        return getHelper().getModelDao().queryForAll();
    } catch (SQLException e) {
        Timber.e(ErrorUtils.getExceptionString(e));
        return null;
    }
}

模型是一个占位符

您的导入指定了 java.sql.Date,但您的 Ormlite 字段的类型是 java.util.Date。解决方案是更改 java 文件顶部的导入,以便引入正确的 class。

IllegalArgumentException: field model.date_time_created has type java.sql.Date, got java.util.Date

问题原来是 ORMLite 中的错误。在 Android/SQLite 下,我们必须将所有日期转换为字符串,而从 java.sql.Date 的转换被破坏了。切换到 java.util.Date 即可。

这将在 5.0 版本中修复。参见:https://github.com/j256/ormlite-android/issues/51