JDBCExceptionReporter - Incorrect syntax near ','. Alguém pode me ajudar?

Boa tarde galera…estou com um problema aqui muito estranho, será que alguém pode me ajudar??? Acredito que seja simples a solução desse problema, mas não to conseguindo descobrir onde esta essa “,”…rsrsrs

Preciso deletar um registro da Entidade AlteracaoModuloEtapa onde corresponda com todos os parametros que estou passando. Todos os valores dos parametros estão corretíssimos, porém quando ele realiza o executeUpdate, ele me lança essa Exception de outro mundo…

Segue o HQL…


					for(CicloAvaliacaoModuloEtapa came : cicloAvaliacaoModuloEtapa){
						query = em.createQuery( "delete from AlteracaoAvaliadorLog " +
												"where empresa.id = :empresa " +
												"and etapa.id = :etapa " +
												"and cicloAvaliacaoModulo.cicloAvaliacao.id = :ca " +
												"and cicloAvaliacaoModulo.id = :cam" );
						query.setParameter( "empresa", usuario.getEmpresa().getId() );
						query.setParameter( "etapa", came.getEtapa().getId() );
						query.setParameter( "cam", came.getCicloAvaliacaoModulo().getId() );
						query.setParameter( "ca", cicloAvaliacao.getId() );
						
						query.executeUpdate();
					}

Essa é a Exception


[http-8080-1] ERROR org.hibernate.util.JDBCExceptionReporter - Incorrect syntax near ','.
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute update query
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
	at org.hibernate.ejb.QueryImpl.executeUpdate(QueryImpl.java:58)
	at br.com.merodata.avtotal.business.RemoveMovimentoBusinessImpl.apagaMovimento(RemoveMovimentoBusinessImpl.java:114)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at $Proxy198.apagaMovimento(Unknown Source)
	at br.com.merodata.avtotal.web.ApagaMovimentoAction.execute(ApagaMovimentoAction.java:67)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.merodata.avtotal.web.filter.LoginFilter.doFilter(LoginFilter.java:40)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.merodata.avtotal.web.filter.ExceptionFilter.doFilter(ExceptionFilter.java:25)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.merodata.avtotal.web.filter.NoCacheFilter.doFilter(NoCacheFilter.java:22)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:111)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.exception.SQLGrammarException: could not execute update query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:84)
	at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:396)
	at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:259)
	at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1141)
	at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)
	at org.hibernate.ejb.QueryImpl.executeUpdate(QueryImpl.java:49)
	... 47 more
Caused by: java.sql.SQLException: Incorrect syntax near ','.
	at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
	at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)
	at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)
	at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)
	at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:584)
	at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:546)
	at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeUpdate(JtdsPreparedStatement.java:505)
	at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
	at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:75)
	... 52 more

ALGUÉM, PLEASE, ME DE UMA LUZ!!! rsrsrs

Abraços a todos!

Coloca pro hibernate mostrar o sql gerado que está sendo executado.

Olhando sua query, parece está OK, pois unico lugar que poderia estar adicionando “,” seria chegando via esses parâmetros…

Esses “getId()” retornam String???

Para tirar nossa duvida… use o log4J

adicione as seguintes linhas:

log4j.logger.org.hibernate=WARN
log4j.logger.org.hibernate.SQL=TRACE
log4j.logger.org.hibernate.type=TRACE

[quote]
15/12/2010 14:12:54 Assunto: Re:JDBCExceptionReporter - Incorrect syntax near ‘,’. Alguém pode me ajudar???
Olhando sua query, parece está OK, pois unico lugar que poderia estar adicionando “,” seria chegando via esses parâmetros…

Esses “getId()” retornam String??? [/quote]

Não Wesley, todos os id’s são Long… já verifiquei isso…ja fiz um clean do meu projeto tbm pra ver se era cache ou algo assim, mas não é!!!
Tem algum erro besta na minha query…mas nao consigo localiza-lo…

Tem mais alguma outra sugestão???

Obrigado…

LucianoM86, a query que esta sendo montada é essa:

delete from AlteracaoAvaliadorLog where empresa.id = 1 and etapa.id = 3 and cicloAvaliacaoModulo.cicloAvaliacao.id = 28 and cicloAvaliacaoModulo.id = 1

Cabrero né??? Aparentemente ta correto…

na verdade tá estranha…pois da onde vem os alias “empresa”, “etapa”…?

Estou usando alias agora, mas o erro é o mesmo, meu alias equivale o AlteracaoAvaliadorLog…ta assim:


"delete from AlteracaoAvaliadorLog a" +
"where a.empresa.id = :empresa " +
"and a.cicloAvaliacaoModulo.id = :cam " +
"and a.cicloAvaliacaoModulo.cicloAvaliacao.id = :ca " +
"and a.etapa.id = :etapa"

É isso q to dizendo, ta estranho cara…muito.

cara…esse é o jpql que você escreveu…tenta configurar o hibernate pra ele mostrar o sql gerado mesmo, o que é executado no BD…

Ok…mas como faço essa configuração?? É simples??? Vc pode me explicar ou me passar algum material que me auxilie??
Dai faço isso e te passo o log.

http://www.google.com.br/#hl=pt-BR&biw=1280&bih=800&&sa=X&ei=dgkJTbquHoWClAffoKC-AQ&ved=0CDAQBSgA&q=hibernate+show_sql&spell=1&fp=e394e39ad970b3ac