我正在试用,但得到了以下错误:
com.j256.ormlite.stmt.SelectIterator cannot be cast to
com.j256.ormlite.dao.CloseableIterable这是导致错误的代码;而不是CloseableIterator<Employee>,而是返回SelectorIterator<Employee>:
public CloseableIterator<Employee> getEmployeesToSync(Context context){
DatabaseHelper databaseHelper = new DatabaseHelper(context);
CloseableIterator<Employee> iterator = null;
try {
iterator = databaseHelper.getEmployeesDao().queryBuilder().
where().
eq(Employee.IS_SYNCED, false).
iterator();
} catch (Exception ex) {
Log.e(LOG_TAG, ex.getMessage());
}
return iterator;
}发布于 2017-03-16 15:36:39
不能将com.j256.ormlite.stmt.SelectIterator转换为com.j256.ormlite.dao.CloseableIterable
我不能百分之百确定为什么会发生这种情况,除非Employee类型是不同的类。通过查看import语句,可以确保代码引用的是同一个类。
这不应该是一个强制转换问题,因为SelectIterator<T, ID>扩展了CloseableIterable<T>,而Where.iterator()返回一个恰好是SelectIterator的CloseableIterator。见 javadocs。
我不确定这是否是问题所在,但您需要将CloseableIterator<T>转换为SelectIterator<T, ID>,因为泛型无法推断ID类型。因此,如果您有一个CloseableIterator<Employee>,并且id类型的Employee是一个int,那么您需要将其大小写为SelectIterator<Employee, Integer>。
https://stackoverflow.com/questions/42711933
复制相似问题