2015-09-12 134 views
0

我的模型有一个java.sql.Date变量,我可以保存得很好。我无法使用Ormlite从sqlite数据库检索数据?

但每当我尝试检索行,它抛出这个错误:

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; 
    } 
} 

模型是一个占位符

+1

发布您的代码。 – Amila

+1

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

回答

1

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

原来,这个问题是一个错误的ORMLite。在Android/SQLite下,我们必须将所有日期转换为字符串,并且从java.sql.Date转换已被打破。切换到java.util.Date将工作。

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

+0

谢谢。我也设法通过切换到java.util.Date并将注释中的DataType更改为DataType.Date –

+0

您不应该需要'DataType',因为如果您使用java.util,ORMLite将为您设置它.Date' @JohnErnestGuadalupe。 – Gray

1

你进口的规定java.sql.Date,但您的Ormlite字段的类型为java.util.Date。解决的办法是让正确的类被带到你的java文件的顶部改变进口。

+0

这个工作吗?我记得我切换到java.sql.Datw,因为java.util.Date不兼容 –