[ http://issues.apache.org/jira/browse/IBATIS-109?page=comments#action_63127 ] Brandon Goodin commented on IBATIS-109: ---------------------------------------
Another thought, are you using FORWARD_ONLY resulset type? Maybe if you changed it's type it wouldn't close it out. Also, you would be using list.nextPage() because next() does not exist. > PaginatedList bug > ----------------- > > Key: IBATIS-109 > URL: http://issues.apache.org/jira/browse/IBATIS-109 > Project: iBatis for Java > Type: Bug > Components: SQL Maps > Versions: 2.0.8, 2.0.9, 2.1.0, 2.1.1, 2.1.2, 2.0.9b > Environment: Any Java environment > Reporter: Patrick Idem > Priority: Critical > > Using DB2 database drivers cases an exception to be thrown when calling > paginatedList.next() and the current page is the page before the last page. > From what I can determine the PaginatedList class retrieves future records in > order to determine if there are any more pages. An Exception will be caused > in the following situation: > A database table has 11 records. > First issue a command to get a paginated list of all the records with a page > size of 10: > PaginatedList list = queryForPaginatedList("getAllRecords", null, 10) > Since the paginated list reads ahead it will retrieve all 11 records and > reach the end of the ResultSet. > Now if we want to view the second page (which only consists of 1 record) we > would then do the following: > list.next() > Now, calling list.next() should not have to go to the database since we had > already reached the end of the ResultSet but it does! This is where the > problem happens. DB2 drivers automatically close the ResultSet when you read > in the last row so the ResultSet has been closed. > I am suspecting that this problem is only serious when using DB2 drivers but > it is still a problem. The paginated list object should be smart enough to > know that there are no more results and not try to hit the database that last > time. > The actually DB2 exception that is thrown is the following: > com.ibm.db2.jcc.a.SqlException: Invalid operation: result set closed -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira