| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/11/2007 10:41:05
|
ibimon
What is classpath?
Membro desde: 23/06/2006 15:48:04
Mensagens: 7
Offline
|
Pessoal estou passando por um problema aqui na empresea gostaria de saber se alguém já passou pelo mesmo caso.
Tenho que disparar uma Stored Procedure no banco Oracle, a conexão é feita via hibernate mas a busca por esse caso em especifico é feito via :
view plainprint?
1. Session session = this.getSessionFactory().getCurrentSession();
2. CallableStatement call = session.connection().prepareCall(sql);
Session session = this.getSessionFactory().getCurrentSession(); CallableStatement call = session.connection().prepareCall(sql);
O probelma é o seguinte, para disparar uma procedure simples faz normalmente, porém, quan eu preciso que me seja retornado dados o pool de conexão nao me da assistência, esta configurado no AplicationContext assim:
view plainprint?
1. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
2. <property name="driverClass" value="OracleDriver"/>
3. <property name="jdbcUrl" value="orades"/>
4. <property name="user" value="Projeto"/>
5. <property name="password" value="*****"/>
6. </bean>
7.
8. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
9. <property name="mappingDirectoryLocations">
10. <list>
11. <value>classpath:*****</value>
12. <value>classpath:*****</value>
13. <value>classpath:******</value>
14. </list>
15. </property>
16.
17. <property name="hibernateProperties">
18. <props>
19. <prop key="hibernate.c3p0.max_size">500</prop>
20. <prop key="hibernate.c3p0.min_size">20</prop>
21. <prop key="hibernate.c3p0.timeout">50000</prop>
22. <prop key="hibernate.c3p0.max_statements">500</prop>
23. <prop key="hibernate.c3p0.idle_test_period">30000</prop>
24. <prop key="hibernate.c3p0.acquire_increment">20</prop>
25. <prop key="hibernate.generate_statistics">true</prop>
26. <prop key="hibernate.use_sql_comments">false</prop>
27. <prop key="hibernate.c3p0.initial_pool_size">4</prop>
28. <prop key="hibernate.c3p0.min_pool_size">2</prop>
29. <prop key="hibernate.c3p0.max_pool_size">25</prop>
30. <!--<prop key="hibernate.hbm2ddl.auto">none</prop>-->
31.
32. <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
33. <prop key="hibernate.show_sql">true</prop>
34. <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
35. <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
36. </props>
37. </property>
38.
39. <property name="dataSource">
40. <ref bean="dataSource"/>
41. </property>
42. </bean>
43.
44.
45. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
46. <property name="nestedTransactionAllowed">
47. <value>true</value>
48. </property>
49. <property name="sessionFactory"><ref local="sessionFactory"/></property>
50. <property name="jdbcExceptionTranslator"><ref bean="jdbcExceptionTranslator"/></property>
51. </bean>
52.
53. <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
54. <property name="transactionManager"><ref bean="transactionManager"/></property>
55. </bean>
56.
57. <bean id="errorCode" class="exception.MySqlErrorCode" />
58. <bean id="constantes" class="ConstantesOracle" />
59. <!-- <bean id="constantes" class=".util.ConstantesSQLServer" /> -->
60. <bean id="jdbcExceptionTranslator" class="exception.MySQLErrorCodesTranslator">
61. <property name="arquivoMensagens"><value>mensagensCce.properties</value></property>
62. <property name="constantes"><ref bean="constantes"/></property>
63. <property name="dataSource"><ref bean="dataSource"/></property>
64. <property name="sqlErrorCodes"><ref bean="errorCode"/></property>
65. </bean>
66.
67. <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
68. <property name="sessionFactory"><ref bean="sessionFactory"/></property>
69. <property name="jdbcExceptionTranslator"><ref bean="jdbcExceptionTranslator"/></property>
70. </bean>
71. <bean name="mensagemSucesso" class="java.lang.String"><constructor-arg><value>Operação realizada com sucesso.</value></constructor-arg></bean>
72.
73. <bean name="arquivoMensagens" class="java.lang.String"><constructor-arg><value>Projeto</value></constructor-arg></bean>
74. <bean name="email" class="java.lang.String"><constructor-arg><value>mail.properties</value></constructor-arg></bean>
75.
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="OracleDriver"/> <property name="jdbcUrl" value="orades"/> <property name="user" value="Projeto"/> <property name="password" value="*****"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="mappingDirectoryLocations"> <list> <value>classpath:*****</value> <value>classpath:*****</value> <value>classpath:******</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.c3p0.max_size">500</prop> <prop key="hibernate.c3p0.min_size">20</prop> <prop key="hibernate.c3p0.timeout">50000</prop> <prop key="hibernate.c3p0.max_statements">500</prop> <prop key="hibernate.c3p0.idle_test_period">30000</prop> <prop key="hibernate.c3p0.acquire_increment">20</prop> <prop key="hibernate.generate_statistics">true</prop> <prop key="hibernate.use_sql_comments">false</prop> <prop key="hibernate.c3p0.initial_pool_size">4</prop> <prop key="hibernate.c3p0.min_pool_size">2</prop> <prop key="hibernate.c3p0.max_pool_size">25</prop> <!--<prop key="hibernate.hbm2ddl.auto">none</prop>--> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.cglib.use_reflection_optimizer">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop> </props> </property> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="nestedTransactionAllowed"> <value>true</value> </property> <property name="sessionFactory"><ref local="sessionFactory"/></property> <property name="jdbcExceptionTranslator"><ref bean="jdbcExceptionTranslator"/></property> </bean> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager"><ref bean="transactionManager"/></property> </bean> <bean id="errorCode" class="exception.MySqlErrorCode" /> <bean id="constantes" class="ConstantesOracle" /> <!-- <bean id="constantes" class=".util.ConstantesSQLServer" /> --> <bean id="jdbcExceptionTranslator" class="exception.MySQLErrorCodesTranslator"> <property name="arquivoMensagens"><value>mensagensCce.properties</value></property> <property name="constantes"><ref bean="constantes"/></property> <property name="dataSource"><ref bean="dataSource"/></property> <property name="sqlErrorCodes"><ref bean="errorCode"/></property> </bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"><ref bean="sessionFactory"/></property> <property name="jdbcExceptionTranslator"><ref bean="jdbcExceptionTranslator"/></property> </bean> <bean name="mensagemSucesso" class="java.lang.String"><constructor-arg><value>Operação realizada com sucesso.</value></constructor-arg></bean> <bean name="arquivoMensagens" class="java.lang.String"><constructor-arg><value>Projeto</value></constructor-arg></bean> <bean name="email" class="java.lang.String"><constructor-arg><value>mail.properties</value></constructor-arg></bean>
Se alguém passou por esse problema poderia me ajudar por favor?
|
Ibimon Pereira Morais
SÓ ESTOU AQUI POR DEUS É BOM! |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/11/2007 11:03:36
|
rodrigo_gomes
GUJ Master
![[Avatar]](/images/avatar/d30960ce77e83d896503d43ba249caf7.jpg)
Membro desde: 25/11/2003 15:45:21
Mensagens: 1088
Localização: São Paulo
Offline
|
Olá,
o que vc quer dizer com "pool de conexão nao me da assistência"?
|
rodrigo de paiva gomes
http://twitter.com/rod_gomes |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/11/2007 11:45:59
|
ibimon
What is classpath?
Membro desde: 23/06/2006 15:48:04
Mensagens: 7
Offline
|
rodrigo_gomes wrote:Olá,
o que vc quer dizer com "pool de conexão nao me da assistência"?
A chamada é para esse método o problema ocorre quando executa a linha:
//cria um cursor para o Oracle
((OracleConnection) call.getConnection()).setCreateStatementAsRefCursor(true);
public List executeProcedure(String sql, Object[] parametros, boolean returnType) throws BDException, AcessoException{
List lista = null;
try{
Session session = this.getSessionFactory().getCurrentSession();
CallableStatement call = session.connection().prepareCall(sql);
if(parametros != null){
//percorre o array de parâmetros inserindo os mesmos na
//procedure
for(int i = 0; i < parametros.length; i++){
//campo que referência um resultSet
if(parametros[i] == null){
call.registerOutParameter(i+1, -10);
//insere um tipo INTEGER
}else if(parametros[i] instanceof Integer){
call.setInt(i+1, ((Integer)parametros[i]).intValue());
//insere um tipo LONG
}else if(parametros[i] instanceof Long){
call.setLong(i+1, ((Long)parametros[i]).longValue());
//insere um tipo DOUBLE
}else if(parametros[i] instanceof Double){
call.setDouble(i+1, ((Double)parametros[i]).doubleValue());
//insere um tipo FLOAT
}else if(parametros[i] instanceof Float){
call.setFloat(i+1, ((Float)parametros[i]).floatValue());
//insere um tipo STRING
}else if(parametros[i] instanceof String){
call.setString(i+1, (String)parametros[i]);
//insere um tipo BYTE
}else if(parametros[i] instanceof Byte){
call.setByte(i+1, ((Byte)parametros[i]).byteValue());
}
}
//cria um cursor para o Oracle
((OracleConnection) call.getConnection()).setCreateStatementAsRefCursor(true);
//executa a procedura
call.execute();
if(returnType){
//converte o ResultSet em uma Lista de MAP'S com os itens da Procedure
lista = this.converteResultSet((ResultSet)call.getObject(1), null);
}
call.close();
}else{
if(returnType){
lista = this.converteResultSet(call.executeQuery(), null);
}else {
call.execute();
}
call.close();
}
}catch (Exception e) {
throw new AcessoException(e);
}
return lista;
}
ERRO:
.persistencia.hibernate.DAOHibernate.executeProcedure() - com.mchange.v2.c3p0.impl.NewProxyConnection
java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection
persistencia.hibernate.DAOHibernate.executeProcedure(DAOHibernate.java:117)
Linha 117 = ((OracleConnection) call.getConnection()).setCreateStatementAsRefCursor(true);
|
Ibimon Pereira Morais
SÓ ESTOU AQUI POR DEUS É BOM! |
|
|
 |
|
|
|
|