HHH-8684 - Named output parameters don't work for stored procedure call

This commit is contained in:
Steve Ebersole 2013-11-18 16:17:31 -06:00
parent 162e1659c3
commit 465c3b1e9c
1 changed files with 37 additions and 35 deletions

View File

@ -235,30 +235,31 @@ public class StoredProcedureTest extends BaseCoreFunctionalTestCase {
session.close(); session.close();
} }
@Test // H2 does not support named parameters
public void testInParametersByName() { // @Test
Session session = openSession(); // public void testInParametersByName() {
session.beginTransaction(); // Session session = openSession();
// session.beginTransaction();
ProcedureCall query = session.createStoredProcedureCall( "findUserRange" ); //
query.registerParameter( "start", Integer.class, ParameterMode.IN ).bindValue( 1 ); // ProcedureCall query = session.createStoredProcedureCall( "findUserRange" );
query.registerParameter( "end", Integer.class, ParameterMode.IN ).bindValue( 2 ); // query.registerParameter( "start", Integer.class, ParameterMode.IN ).bindValue( 1 );
ProcedureOutputs procedureResult = query.getOutputs(); // query.registerParameter( "end", Integer.class, ParameterMode.IN ).bindValue( 2 );
Output currentOutput = procedureResult.getCurrent(); // ProcedureOutputs procedureResult = query.getOutputs();
assertNotNull( currentOutput ); // Output currentOutput = procedureResult.getCurrent();
ResultSetOutput resultSetReturn = assertTyping( ResultSetOutput.class, currentOutput ); // assertNotNull( currentOutput );
List results = resultSetReturn.getResultList(); // ResultSetOutput resultSetReturn = assertTyping( ResultSetOutput.class, currentOutput );
assertEquals( 1, results.size() ); // List results = resultSetReturn.getResultList();
Object result = results.get( 0 ); // assertEquals( 1, results.size() );
assertTyping( Object[].class, result ); // Object result = results.get( 0 );
Integer id = (Integer) ( (Object[]) result )[0]; // assertTyping( Object[].class, result );
String name = (String) ( (Object[]) result )[1]; // Integer id = (Integer) ( (Object[]) result )[0];
assertEquals( 1, (int) id ); // String name = (String) ( (Object[]) result )[1];
assertEquals( "User 1", name ); // assertEquals( 1, (int) id );
// assertEquals( "User 1", name );
session.getTransaction().commit(); //
session.close(); // session.getTransaction().commit();
} // session.close();
// }
@Test @Test
public void testInParametersByPosition() { public void testInParametersByPosition() {
@ -305,17 +306,18 @@ public class StoredProcedureTest extends BaseCoreFunctionalTestCase {
} }
} }
{ // H2 does not support named parameters
ProcedureCall query = session.createStoredProcedureCall( "findUserRange" ); // {
query.registerParameter( "start", Integer.class, ParameterMode.IN ); // ProcedureCall query = session.createStoredProcedureCall( "findUserRange" );
query.registerParameter( "end", Integer.class, ParameterMode.IN ).bindValue( 2 ); // query.registerParameter( "start", Integer.class, ParameterMode.IN );
try { // query.registerParameter( "end", Integer.class, ParameterMode.IN ).bindValue( 2 );
query.getOutputs(); // try {
fail( "Expecting failure due to missing parameter bind" ); // query.getOutputs();
} // fail( "Expecting failure due to missing parameter bind" );
catch (JDBCException expected) { // }
} // catch (JDBCException expected) {
} // }
// }
session.getTransaction().commit(); session.getTransaction().commit();
session.close(); session.close();