【问题标题】:I can't retrieve data from sqlite db using Ormlite?我无法使用 Ormlite 从 sqlite db 检索数据?
【发布时间】:2015-09-12 07:47:29
【问题描述】:

我的模型有一个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;
    }
}

模型是占位符

【问题讨论】:

  • @John Ernest Guadalupe:检查字段 model.date_time_created 并导入 Date 类型的语句。它应该有'java.util.Date'..!!

标签: java android sqlite ormlite


【解决方案1】:

IllegalArgumentException:字段 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

【讨论】:

  • 谢谢。我还设法通过切换到 java.util.Date 并将注释中的 DataType 更改为 DataType.Date 来解决这个问题
  • 你不应该需要DataType,因为如果你使用java.util.Date@JohnErnestGuadalupe,ORMLite 会为你设置。
【解决方案2】:

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

【讨论】:

  • 这行得通吗?我记得我切换到 java.sql.Datw 因为 java.util.Date 不兼容
猜你喜欢
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 2019-07-03
相关资源
最近更新 更多