Android Ormlite 获取 SelectorIterator<T, ID> 而不是 CloseableIterator<T>
Android Ormlite getting SelectorIterator<T, ID> instead of CloseableIterator<T>
我正在试用 android Ormlite 但收到此错误:
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;
}
com.j256.ormlite.stmt.SelectIterator cannot be cast to
com.j256.ormlite.dao.CloseableIterable
我不是 100% 确定为什么会发生这种情况,除非 Employee
类型是不同的 class。我会通过查看导入语句来确保您的代码引用相同的 class。
这不应该是转换问题,因为 SelectIterator<T, ID>
扩展了 CloseableIterable<T>
和 Where.iterator()
returns a CloseableIterator
which happens to be a SelectIterator
. See the SelectIterator
javadocs.
我不确定这是否是问题所在,但您 将 需要将 CloseableIterator<T>
转换为 SelectIterator<T, ID>
因为没有办法让泛型推断 ID 类型。所以如果你有一个
CloseableIterator<Employee>
并且 Employee
的 id 类型是 int
那么您需要将其大小写为 SelectIterator<Employee, Integer>
.
我正在试用 android Ormlite 但收到此错误:
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;
}
com.j256.ormlite.stmt.SelectIterator cannot be cast to com.j256.ormlite.dao.CloseableIterable
我不是 100% 确定为什么会发生这种情况,除非 Employee
类型是不同的 class。我会通过查看导入语句来确保您的代码引用相同的 class。
这不应该是转换问题,因为 SelectIterator<T, ID>
扩展了 CloseableIterable<T>
和 Where.iterator()
returns a CloseableIterator
which happens to be a SelectIterator
. See the SelectIterator
javadocs.
我不确定这是否是问题所在,但您 将 需要将 CloseableIterator<T>
转换为 SelectIterator<T, ID>
因为没有办法让泛型推断 ID 类型。所以如果你有一个
CloseableIterator<Employee>
并且 Employee
的 id 类型是 int
那么您需要将其大小写为 SelectIterator<Employee, Integer>
.