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

9 respostas
gabriel.coelho

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!

9 Respostas

LucianoM86

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

W

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
gabriel.coelho


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???

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…

gabriel.coelho

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…

LucianoM86

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

gabriel.coelho

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.

LucianoM86

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

gabriel.coelho

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.

LucianoM86

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

Criado 15 de dezembro de 2010
Ultima resposta 15 de dez. de 2010
Respostas 9
Participantes 3