diff --git a/src/java/com/samskivert/jdbc/depot/FindAllQuery.java b/src/java/com/samskivert/jdbc/depot/FindAllQuery.java index eddfb50..5a58ae6 100644 --- a/src/java/com/samskivert/jdbc/depot/FindAllQuery.java +++ b/src/java/com/samskivert/jdbc/depot/FindAllQuery.java @@ -124,11 +124,16 @@ public abstract class FindAllQuery // and execute it try { ResultSet rs = stmt.executeQuery(); - for (Key key : fetchKeys) { - if (!rs.next()) { - throw new SQLException("Expecting more rows in result set."); - } - entities.put(key, _marsh.createObject(rs)); + int cnt = 0; + while (rs.next()) { + T obj = _marsh.createObject(rs); + entities.put(_marsh.getPrimaryKey(obj), obj); + cnt ++; + } + if (cnt != fetchKeys.size()) { + throw new SQLException( + "Row count mismatch in second pass [expectedCount=" + fetchKeys.size() + + ", actualCount=" + cnt + "]"); } } finally {