mehdikwa
-
26 févr. 2014 à 13:16
mehdikwa
Messages postés9Date d'inscriptionmercredi 26 février 2014StatutMembreDernière intervention29 mai 2014
-
3 mars 2014 à 10:29
Bonjour,
J'utilise hibernate 3 avec Spring 2.5, en essayant de lancer une requette sur une vue matérialisé je recois l'exeption ci-dessous.
Merci de m'aider.
Voici ma requette:
String sql = "SELECT * FROM ADM_RATING.WEBCARE_TABLE WHERE CUSTOMER_ID in (" + "select customer_id from adm_mv.mv_customer_all " + "connect by prior customer_id = customer_id_high and paymntresp is null " + "start with customer_id = ? and paymntresp = 'X') order by CO_ID";
Collection<BscsConsumption> result = this.jdbcTemplate.query( sql, new Object[] { new Long( coId ) }, new RowMapper() { public Object mapRow( ResultSet rs, int rowNum ) throws SQLException { return getConsumption( rs ); } } ); return result;
Caused by: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT R.* FROM ADM_VALOTR.VIEW_RATEPLANS R WHERE CUSTOMER_ID IN (select customer_id from adm_mv.mv_customer_all connect by prior customer_id = customer_id_high and paymntresp is null start with customer_id = ? and paymntresp = 'X')]; nested exception is java.sql.SQLException: Nom de colonne non valide at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:276) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:607) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:641) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:670) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:678) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:710) at com.orangecaraibe.vtr.dao.impl.BscsDaoImpl.getContractsOfPayer(BscsDaoImpl.java:523) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198) at $Proxy97.getContractsOfPayer(Unknown Source) at com.orangecaraibe.vtr.service.impl.ManageInstalledNetworkProductConsumptionImpl.findAndGet(ManageInstalledNetworkProductConsumptionImpl.java:149) at com.orangecaraibe.vtr.soa.provider.ManageInstalledNetworkProductConsumptionProvider.findAndGet(ManageInstalledNetworkProductConsumptionProvider.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:77) at com.orangecaraibe.enabler.Enabler.logMethod(Enabler.java:198) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:64) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:160) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy93.findAndGet(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173) at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89) ... 45 more Caused by: java.sql.SQLException: Nom de colonne non valide at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208) at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3319) at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1926) at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1515) at com.orangecaraibe.vtr.dao.impl.BscsDaoImpl.getContract(BscsDaoImpl.java:498) at com.orangecaraibe.vtr.dao.impl.BscsDaoImpl.access$200(BscsDaoImpl.java:38) at com.orangecaraibe.vtr.dao.impl.BscsDaoImpl$9.mapRow(BscsDaoImpl.java:529) at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:92) at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:653) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
tarek_dotzero
Messages postés817Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention12 avril 2022121 27 févr. 2014 à 01:25
Bonjour,
Vérifiez votre requête, sinon mettez le schéma de la base des données (les requêtes "Create Table"). L'erreur provient de la partie jdbc alors ça ne doit pas avoir lien avec spring et hibernate, il faut descendre versle schéma de la base des données.
mehdikwa
Messages postés9Date d'inscriptionmercredi 26 février 2014StatutMembreDernière intervention29 mai 2014 27 févr. 2014 à 09:00
Bonjour, merci pour ta réponse Tarek. En fait je ne pense pas que ca provient de la base car je descend bien au niveau des schémas ADM_RATING et ADM_MV au niveau de ma requete et la même requete fonctionne parfaitement quand je la lance depuis SQL.
Je pense que c'est le mapping avec l'objet BSCSDao, mais je n'arrive pas à identifier ou?
mehdikwa
Messages postés9Date d'inscriptionmercredi 26 février 2014StatutMembreDernière intervention29 mai 2014 27 févr. 2014 à 11:54
En fait j'ai en partie trouvé la provenance du problème. Quand j'ai changé l'ordre de recupération du resultset dans getContract afin que ca soit au meme ordre des colomns dans la vue VIEW_RATEPLANS, j'obtiens une exception differente.
10:28:43,708 DEBUG org.springframework.jdbc.core.JdbcTemplate(574) - execute - Executing prepared SQL statement [SELECT * FROM ADM_VALOTR.VIEW_RATEPLANS WHERE CO_ID = ?] 10:28:43,718 DEBUG org.springframework.jdbc.datasource.DataSourceUtils(112) - doGetConnection - Fetching JDBC Connection from DataSource 10:28:43,858 DEBUG org.springframework.jdbc.core.StatementCreatorUtils(205) - setParameterValueInternal - Setting SQL statement parameter value: column index 1, parameter value [2200197], value class [java.lang.Long], SQL type unknown 10:28:44,088 DEBUG org.springframework.jdbc.datasource.DataSourceUtils(312) - doReleaseConnection - Returning JDBC Connection to DataSource 10:28:44,098 ERROR com.orangecaraibe.enabler.Enabler(204) - logMethod - Interceptor caught error: java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.orangecaraibe.vtr.dao.BscsContract at com.orangecaraibe.vtr.dao.impl.BscsDaoImpl.getContract(BscsDaoImpl.java:290) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198) at $Proxy163.getContract(Unknown Source)
tarek_dotzero
Messages postés817Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention12 avril 2022121 27 févr. 2014 à 23:17
"Interceptor caught error:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.orangecaraibe.vtr.dao.BscsContract"
Cette erreur apparît lorsqu'on veut faire une affectation mais les types (les classes) sont incompatibles
Une Classe objet = new UneClasse(); UneAutreClasse deuxiemeObjet = objet;
Affiche la pile complète des messages d'erreur, vous allez arriver à la ligne exacte qui provoque le problème.
mehdikwa
Messages postés9Date d'inscriptionmercredi 26 février 2014StatutMembreDernière intervention29 mai 2014 3 mars 2014 à 10:29
En effet merci Tarek tu avais raison j'affectais à un objet BscsContrat un Arraylist en modifiant le BscsContrat à un type collection bscsContrat ca a marché