У меня есть этот запрос:Spring: предыдущая строка в JDBC шаблона
private List<IWsResponse> getBPartnerDetails(String valueNetwork, String reportLevel2) {
JdbcTemplate tm = new JdbcTemplate(ds.getDataSource());
StringBuffer sql = new StringBuffer("SELECT * FROM XRV_BPARTNERDETAILS where rownum < 10 order by BPartner_ID");
response = tm.query(sql.toString(), new BPartnerMapper());
return response;
}
в BPartnerMapper
, я хочу сделать следующее:
получить предыдущие элементов в ResultSet, чтобы сравнить его с фактической линией
@Override
public IWsResponse mapRow(ResultSet rs, int rowNum) throws SQLException {
rs.previous();
int prev_Bpartner_ID = rs.getInt("BPARTNER_ID");
int prev_Location_ID = rs.getInt("BPARTNER_LOCATION_ID");
int prev_User_ID = rs.getInt("User_ID");
rs.next();
int Bpartner_ID = rs.getInt("BPARTNER_ID");
int Location_ID = rs.getInt("BPARTNER_LOCATION_ID");
int User_ID = rs.getInt("User_ID");
// My code
}
Я получаю ошибку в rs.previous()
:
java.sql.SQLException: Invalid operation for forward only resultset : previous
как я могу исправить это, чтобы получить previous
элементы resultSet
Сообщите код, в котором вы создаете 'Statement' – Rehman
Вы не должны выполнять' next() 'или' previous() 'в первую очередь в' RowMapper'. Вы должны использовать 'ResultSetExtractor' и просто перебирать результаты (сохранять последний и сравнивать со следующим). Вместо того, чтобы возвращаться и двигаться вперед. Вы также не должны создавать 'JdbcTemplate' каждый раз, когда вам это нужно, производительность не очень умная, поскольку это тяжелый объект для построения. –
Каков ваш прецедент, зачем вам это сравнение? –