public JLGClientData mapRowData(ResultSet rs, int rowNum) throws SQLException { List<SavingsDueData> savings = new ArrayList<>(); JLGClientData client = this.mapRow(rs, rowNum); final Long previousClientId = client.getClientId(); // first savings row of new client record SavingsDueData saving = savingsDueDataMapper.mapRow(rs, rowNum); savings.add(saving); while (rs.next()) { final Long clientId = JdbcSupport.getLong(rs, "clientId"); if (previousClientId != null && clientId.compareTo(previousClientId) != 0) { // client id changes then return for next client data return JLGClientData.withSavings(client, savings); } saving = savingsDueDataMapper.mapRow(rs, rowNum); savings.add(saving); } return JLGClientData.withSavings(client, savings); }