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

时间:2015-09-12 07:47:30

标签: java android sqlite 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;
    }
}

模型是占位符

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

  

IllegalArgumentException:field model.date_time_created的类型为java.sql.Date,java.util.Date

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

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