/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.jpa.test.procedure; import java.util.List; import javax.persistence.EntityManager; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase; import org.hibernate.procedure.internal.ProcedureCallMementoImpl; import org.hibernate.procedure.spi.ParameterStrategy; import org.hibernate.type.IntegerType; import org.hibernate.type.LongType; import org.hibernate.type.StringType; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; /** * @author Strong Liu <stliu@hibernate.org> */ public abstract class AbstractStoredProcedureTest extends BaseEntityManagerFunctionalTestCase { @Test public void testNamedStoredProcedureBinding() { EntityManager em = getOrCreateEntityManager(); SessionFactoryImplementor sf = em.getEntityManagerFactory().unwrap( SessionFactoryImplementor.class ); final ProcedureCallMementoImpl m1 = (ProcedureCallMementoImpl) sf.getNamedQueryRepository() .getNamedProcedureCallMemento( "s1" ); assertNotNull( m1 ); assertEquals( "p1", m1.getProcedureName() ); assertEquals( ParameterStrategy.NAMED, m1.getParameterStrategy() ); List<ProcedureCallMementoImpl.ParameterMemento> list = m1.getParameterDeclarations(); assertEquals( 2, list.size() ); ProcedureCallMementoImpl.ParameterMemento memento = list.get( 0 ); assertEquals( "p11", memento.getName() ); assertEquals( javax.persistence.ParameterMode.IN, memento.getMode() ); assertEquals( IntegerType.INSTANCE, memento.getHibernateType() ); assertEquals( Integer.class, memento.getType() ); memento = list.get( 1 ); assertEquals( "p12", memento.getName() ); assertEquals( javax.persistence.ParameterMode.IN, memento.getMode() ); assertEquals( IntegerType.INSTANCE, memento.getHibernateType() ); assertEquals( Integer.class, memento.getType() ); final ProcedureCallMementoImpl m2 = (ProcedureCallMementoImpl) sf.getNamedQueryRepository() .getNamedProcedureCallMemento( "s2" ); assertNotNull( m2 ); assertEquals( "p2", m2.getProcedureName() ); assertEquals( ParameterStrategy.POSITIONAL, m2.getParameterStrategy() ); list = m2.getParameterDeclarations(); memento = list.get( 0 ); assertEquals( Integer.valueOf( 1 ), memento.getPosition() ); assertEquals( javax.persistence.ParameterMode.INOUT, memento.getMode() ); assertEquals( StringType.INSTANCE, memento.getHibernateType() ); assertEquals( String.class, memento.getType() ); memento = list.get( 1 ); assertEquals( Integer.valueOf( 2 ), memento.getPosition() ); assertEquals( javax.persistence.ParameterMode.INOUT, memento.getMode() ); assertEquals( LongType.INSTANCE, memento.getHibernateType() ); assertEquals( Long.class, memento.getType() ); } }