我无法使用 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
我的模型有一个 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