Я пытаюсь конвертировать из ResultSet
в CachedRowSet/CachedRowSetImpl
.ResultSet
кажется пустым после метода заполнения, как и CachedRowSet
.Я искал повсюду, пробуя разные подходы (включая Фабрику).Ниже приведен фрагмент кода с некоторыми указаниями на то, что происходит.
class ResultSetMapper implements RowMapper<CachedRowSet>{
@Override
public CachedRowSet map(ResultSet rs, StatementContext ctx) throws SQLException {
//CachedRowSet crs = RowSetProvider.newFactory().createCachedRowSet();
System.out.println(rs.getLong("something")); -> This gets printed
CachedRowSetImpl crs = new CachedRowSetImpl();
crs.populate(rs);
System.out.println(crs.getInt("something"); -> ArrayIndexOutOfBoundsException (mostly -1, sometimes returning 0)
System.out.println(rs.getLong("something")); -> This doesn't get printed
System.out.println(crs.size()); -> 0
return crs;
}
}
Буду очень признателен за любую помощь или понимание этой проблемы!
РЕДАКТИРОВАТЬ: В результате некоторой отладки я обнаружил, что CachedRowSet не пустой .RowSetMD.colCount = 3. Он также имеет правильные метки.Это не меняет проблему, но гарантирует, что я не вызываю геттеры для пустого объекта.Это делает проблему еще труднее понять