public List<Address> listAddressesForName(String firstName, String lastName) {
StoredProcedureQuery query = em.createStoredProcedureQuery("GET_ADDRESS_BY_NAME");
query.registerStoredProcedureParameter("fname_in", String.class, ParameterMode.IN);
query.registerStoredProcedureParameter("lname_in", String.class, ParameterMode.IN);
query.registerStoredProcedureParameter("rec_out", ResultSet.class, ParameterMode.REF_CURSOR);
query.registerStoredProcedureParameter("err_out", String.class, ParameterMode.OUT);
ResultSet rs = null;
try {
query
.setParameter("fname_in", firstName)
.setParameter("lname_in", lastName);
query.execute();
rs = (ResultSet) query.getOutputParameterValue("rec_out");
List<Address> listAddress = new LinkedList<>();
while (rs.next()) {
Address address = new Address(
-1,
rs.getString(1),
rs.getString(2),
rs.getString(3));
listAddress.add(address);
}
return new ArrayList<>(listAddress);
} catch (SQLException e) {
e.printStackTrace();
throw new TestException("Could not retrieve Addresses for " + firstName + " " + lastName, e);
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}