[hibernate-commits] Hibernate SVN: r13962 - core/trunk/core/src/main/java/org/hibernate/impl.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Aug 29 19:00:41 EDT 2007


Author: gbadner
Date: 2007-08-29 19:00:41 -0400 (Wed, 29 Aug 2007)
New Revision: 13962

Modified:
   core/trunk/core/src/main/java/org/hibernate/impl/IteratorImpl.java
Log:
HHH-2728 : session.clear() while retrieving objects via an iterator fix that should work for all dialects


Modified: core/trunk/core/src/main/java/org/hibernate/impl/IteratorImpl.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/impl/IteratorImpl.java	2007-08-29 23:00:10 UTC (rev 13961)
+++ core/trunk/core/src/main/java/org/hibernate/impl/IteratorImpl.java	2007-08-29 23:00:41 UTC (rev 13962)
@@ -1,4 +1,4 @@
-//$Id: IteratorImpl.java 11651 2007-06-07 18:22:50Z steve.ebersole at jboss.com $
+//$Id: IteratorImpl.java 13956 2007-08-29 00:47:06Z gbadner $
 package org.hibernate.impl;
 
 import java.sql.PreparedStatement;
@@ -54,12 +54,7 @@
 
 		single = types.length==1;
 
-		// rs.isBeforeFirst() will return false if rs contains no rows
-		hasNext = this.rs.isBeforeFirst();
-		if ( !hasNext ) {
-			log.debug("ResultSet contains no rows");
-			close();
-		}
+		postNext();
 	}
 
 	public void close() throws JDBCException {
@@ -92,11 +87,15 @@
 	}
 
 	private void postNext() throws SQLException {
-		this.hasNext = !rs.isLast();
+		log.debug("attempting to retrieve next results");
+		this.hasNext = rs.next();
 		if (!hasNext) {
 			log.debug("exhausted results");
 			close();
 		}
+		else {
+			log.debug("retrieved next results");
+		}
 	}
 
 	public boolean hasNext() {
@@ -106,10 +105,9 @@
 	public Object next() throws HibernateException {
 		if ( !hasNext ) throw new NoSuchElementException("No more results");
 		try {
-			log.debug("retrieving next results");
-			rs.next();
 			boolean isHolder = holderInstantiator.isRequired();
 
+			log.debug("assembling results");
 			if ( single && !isHolder ) {
 				currentResult = types[0].nullSafeGet( rs, names[0], session, null );
 			}




More information about the hibernate-commits mailing list