我的模型有一个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;
}
}
模型是占位符
答案 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