title: can not use resultSet.setFetchDirection(ResultSet.TYPE_SCROLL_SENSITIVE) with spring jdbc DaoSupport with Oracle
body: <p>I want to use scrollable resultset, so when I use two lines of code:</p>
  
  <pre><code> rs.setFetchDirection(ResultSet.TYPE_SCROLL_SENSITIVE);
  rs.absolute(12);
  </code></pre>
  
  <p>in my DAOimpl, I get exception, plz help to solve them, thank in advance.</p>
  
  <pre><code> import oracle.jdbc.OracleTypes;
      import org.springframework.jdbc.core.CallableStatementCallback;
      import org.springframework.jdbc.core.support.JdbcDaoSupport;
      import org.springframework.stereotype.Component;
      @Component
      public class MyDAOimpl extends JdbcDaoSupport implements
              MyDAO {
  
          public List&lt;User&gt; getList(final String where) throws Exception {
  
              return (List) getJdbcTemplate().execute(
                      "{call PKG_USER.getUser(?,?)}",
                      new CallableStatementCallback() {
                          public Object doInCallableStatement(CallableStatement cs)
                                  throws SQLException {
  
                              cs.setString(1, where);
                              cs.registerOutParameter(2, OracleTypes.CURSOR);
                              cs.execute();
  
                              ResultSet rs = (ResultSet) cs.getObject(6);
  
                              rs.setFetchDirection(ResultSet.TYPE_SCROLL_SENSITIVE);
                              rs.absolute(12);
  
                              List&lt;User&gt; list = new ArrayList&lt;User&gt;();
  
                              while (rs.next()) {
  
                                  User user = new User(
                                          rs.getString(1),
                                          rs.getString(2), 
                                          rs.getString(3));
                                  list.add(user);
                              }
                              return list;
                          }
                      });
  
          }
      }
  </code></pre>
  
  <p>this is exception</p>
  
  <pre><code>java.sql.SQLException: Invalid argument(s) in call: setFetchDirection
      oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
      oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
      oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
      oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263)
      oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271)
      oracle.jdbc.driver.BaseResultSet.setFetchDirection(BaseResultSet.java:128)
  </code></pre>
  
  <p>//////////////////////////////////////////////////////////////////////////////////////////</p>
  
  <p>where I change like the following, I didn't get any result, normally, my procedure return 100 users:</p>
  
  <pre><code>return (List) getJdbcTemplate().execute(new CallableStatementCreator() {
  
              public CallableStatement createCallableStatement(
                      Connection connection) throws SQLException {
                  return connection.prepareCall(
                          "{call PKG_USER.getUser(?,?)}",
                          ResultSet.TYPE_SCROLL_SENSITIVE,
                          ResultSet.TYPE_SCROLL_INSENSITIVE);
              }
          }, new CallableStatementCallback() {
  
              public Object doInCallableStatement(CallableStatement cs)
                      throws SQLException, DataAccessException {
  
                  cs.setString(1, where);
                  cs.registerOutParameter(2, OracleTypes.CURSOR);
                  cs.execute();
  
                  ResultSet rs = (ResultSet) cs.getObject(6);
  
                  //////not run////
                  rs.absolute(12);
                  ////////////////
  
                  List&lt;User&gt; list = new ArrayList&lt;User&gt;();
  
                  while (rs.next()) 
                  {   
                      List&lt;User&gt; list = new ArrayList&lt;User&gt;();
  
                              while (rs.next()) {
  
                                  User user = new User(
                                          rs.getString(1),
                                          rs.getString(2), 
                                          rs.getString(3));
                                  list.add(user);
                              }
                              return list;
              }
          });
  </code></pre>