Search in sources :

Example 11 with Output

use of org.hibernate.result.Output in project hibernate-orm by hibernate.

the class ResultMappingTest method testMappingAllFields.

@Test
public void testMappingAllFields() {
    inTransaction(session -> {
        final ProcedureCall call = session.createStoredProcedureCall("findOneUser", "all-fields");
        final ProcedureOutputs procedureResult = call.getOutputs();
        final Output currentOutput = procedureResult.getCurrent();
        assertNotNull(currentOutput);
        final ResultSetOutput resultSetReturn = assertTyping(ResultSetOutput.class, currentOutput);
        final Object result = resultSetReturn.getSingleResult();
        assertTyping(H2ProcTesting.MyEntity.class, result);
        assertEquals("Steve", ((H2ProcTesting.MyEntity) result).name);
    });
}
Also used : ResultSetOutput(org.hibernate.result.ResultSetOutput) ProcedureCall(org.hibernate.procedure.ProcedureCall) ProcedureOutputs(org.hibernate.procedure.ProcedureOutputs) ResultSetOutput(org.hibernate.result.ResultSetOutput) Output(org.hibernate.result.Output) Test(org.junit.Test)

Example 12 with Output

use of org.hibernate.result.Output in project hibernate-orm by hibernate.

the class StoredProcedureTest method testInParametersByPosition.

@Test
public void testInParametersByPosition() {
    Session session = openSession();
    session.beginTransaction();
    ProcedureCall query = session.createStoredProcedureCall("findUserRange");
    query.registerParameter(1, Integer.class, ParameterMode.IN).bindValue(1);
    query.registerParameter(2, Integer.class, ParameterMode.IN).bindValue(2);
    ProcedureOutputs procedureResult = query.getOutputs();
    Output currentOutput = procedureResult.getCurrent();
    assertNotNull(currentOutput);
    ResultSetOutput resultSetReturn = assertTyping(ResultSetOutput.class, currentOutput);
    List results = resultSetReturn.getResultList();
    assertEquals(1, results.size());
    Object result = results.get(0);
    assertTyping(Object[].class, result);
    Integer id = (Integer) ((Object[]) result)[0];
    String name = (String) ((Object[]) result)[1];
    assertEquals(1, (int) id);
    assertEquals("User 1", name);
    session.getTransaction().commit();
    session.close();
}
Also used : ResultSetOutput(org.hibernate.result.ResultSetOutput) ProcedureCall(org.hibernate.procedure.ProcedureCall) ProcedureOutputs(org.hibernate.procedure.ProcedureOutputs) ResultSetOutput(org.hibernate.result.ResultSetOutput) Output(org.hibernate.result.Output) List(java.util.List) Session(org.hibernate.Session) Test(org.junit.Test)

Example 13 with Output

use of org.hibernate.result.Output in project hibernate-orm by hibernate.

the class StoredProcedureTest method testInParametersByName.

// A warning should be logged if database metadata indicates named parameters are not supported.
@Test
public void testInParametersByName() {
    Session session = openSession();
    session.beginTransaction();
    ProcedureCall query = session.createStoredProcedureCall("findUserRange");
    query.registerParameter("start", Integer.class, ParameterMode.IN).bindValue(1);
    query.registerParameter("end", Integer.class, ParameterMode.IN).bindValue(2);
    ProcedureOutputs procedureResult = query.getOutputs();
    Output currentOutput = procedureResult.getCurrent();
    assertNotNull(currentOutput);
    ResultSetOutput resultSetReturn = assertTyping(ResultSetOutput.class, currentOutput);
    List results = resultSetReturn.getResultList();
    assertEquals(1, results.size());
    Object result = results.get(0);
    assertTyping(Object[].class, result);
    Integer id = (Integer) ((Object[]) result)[0];
    String name = (String) ((Object[]) result)[1];
    assertEquals(1, (int) id);
    assertEquals("User 1", name);
    session.getTransaction().commit();
    session.close();
}
Also used : ResultSetOutput(org.hibernate.result.ResultSetOutput) ProcedureCall(org.hibernate.procedure.ProcedureCall) ProcedureOutputs(org.hibernate.procedure.ProcedureOutputs) ResultSetOutput(org.hibernate.result.ResultSetOutput) Output(org.hibernate.result.Output) List(java.util.List) Session(org.hibernate.Session) Test(org.junit.Test)

Example 14 with Output

use of org.hibernate.result.Output in project hibernate-orm by hibernate.

the class StoredProcedureTest method testGetResultListTuple.

@Test
public void testGetResultListTuple() {
    Session session = openSession();
    session.beginTransaction();
    ProcedureCall query = session.createStoredProcedureCall("findUsers");
    ProcedureOutputs procedureResult = query.getOutputs();
    Output currentOutput = procedureResult.getCurrent();
    assertNotNull(currentOutput);
    ResultSetOutput resultSetReturn = assertTyping(ResultSetOutput.class, currentOutput);
    List results = resultSetReturn.getResultList();
    assertEquals(3, results.size());
    for (Object result : results) {
        assertTyping(Object[].class, result);
        Integer id = (Integer) ((Object[]) result)[0];
        String name = (String) ((Object[]) result)[1];
        if (id.equals(1)) {
            assertEquals("Steve", name);
        } else if (id.equals(2)) {
            assertEquals("John", name);
        } else if (id.equals(3)) {
            assertEquals("Jane", name);
        } else {
            fail("Unexpected id value found [" + id + "]");
        }
    }
    session.getTransaction().commit();
    session.close();
}
Also used : ResultSetOutput(org.hibernate.result.ResultSetOutput) ProcedureCall(org.hibernate.procedure.ProcedureCall) ProcedureOutputs(org.hibernate.procedure.ProcedureOutputs) ResultSetOutput(org.hibernate.result.ResultSetOutput) Output(org.hibernate.result.Output) List(java.util.List) Session(org.hibernate.Session) Test(org.junit.Test)

Aggregations

ProcedureCall (org.hibernate.procedure.ProcedureCall)14 Output (org.hibernate.result.Output)14 ResultSetOutput (org.hibernate.result.ResultSetOutput)14 Test (org.junit.Test)14 Session (org.hibernate.Session)10 ProcedureOutputs (org.hibernate.procedure.ProcedureOutputs)9 List (java.util.List)3 EntityManager (javax.persistence.EntityManager)3 TestForIssue (org.hibernate.testing.TestForIssue)1