1.在事务的实体类里添加getSession方法
@Repository("dao3") public class OracleRepositoryImpl extends NaviRepositoryImpl { /** 实体类管理类对象 */ @PersistenceContext(unitName = "thirdaryPersistenceUnit") private EntityManager entityManager; @Override public EntityManager getEntityManager() { return entityManager; } //getSession public Session getEntityManagerSession() { HibernateEntityManager hEntityManager = (HibernateEntityManager)entityManager; Session session = hEntityManager.getSession(); return session; } }2.实现调用无返回值的存储过程
Session session = dao3.getEntityManagerSession(); try { countSize=callProcedure(session); } catch (Exception e) { //todo test rollback } private void callProcedure(Session session) {
// call proc SQLQuery queryLoadProduct = session.createSQLQuery("{call ARRAY_BASE_LOADER.LOAD_PRODUCT()}"); queryLoadProduct.executeUpdate(); }3.实现调用有返回值的存储过程
CallableStatement statement = cp.getConnection().prepareCall(
"{call MachineDataQuery(?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
statement.setInt(1, machineId);
statement.setInt(2, jobId);
statement.setInt(3, partTypeId);
statement.setInt(4, compentId);