我有以下结构:
- Hibernate 4.0.1 的一个层,使用 C3P0 作为连接池。
我没有配置数据源,我使用像这样的数据源动态配置:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persitenceUnit", createMap(ds));
'ds' 是一个具有我的数据库属性的对象,例如用户、密码、url ......
我以这种方式获得 Entitymanager:
EntityManager em = emf.createEntityManager();
我尝试以这种方式获得连接:
EntityManagerImpl entityManagerImpl = (EntityManagerImpl)em; SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl)entityManagerImpl.getSession().getSessionFactory(); Connection con = sessionFactoryImpl.getConnectionProvider().getConnection();
但是, con 是一个 NewProxyConnection 实例。我需要执行一个返回 ORAData 并con.prepareCall(sqlToProcedure)
返回没有 getOraData 的 NewProxyCallableStatment 的过程,即此代码不起作用:
OracleCallableStatment ocs = (OracleCallableStatment)con.prepareCall('{call stp_test(?)}');
ocs.excute();
TestObjectodf to = ocs.getOraDATA(1, TestObject.getOraDataFactory());
错误发生在
OracleCallableStatment ocs = (OracleCallableStatment)con.prepareCall('{call stp_test(?)}');
我尝试:
NewProxyConnection npCon = sessionFactoryImpl.getConnectionProvider().getConnection();
Connection con = npCon.unwrap(Connection.class);
但不要工作。