ERRO HQL

24 views
Skip to first unread message

Denise Viana

unread,
Jun 9, 2010, 2:24:20 PM6/9/10
to javasf
Pessaoal,

O Hql faz alguns questionamento quanto aos comandos "on", ïnner", ....
Como faço pra ele aceitar ????

Estou fazendo isso no DAO:

String query =

" select rh " +
" from Projeto projeto join ProjetoRH rh with projeto.idProjeto =
rh.idProjeto " +
" join Programa programa with programa.idPrograma =
projeto.programa.idPrograma where " +
" projeto.inTipo in (@tipoProjeto) " +
" and projeto.inStatusProjeto not in (@statusProjeto) " +
" and projeto.idProjeto = rh.idProjeto " +
" and programa.idPrograma = projeto.programa.idPrograma " +
" and programa.boAtivo = true " +
" and rh.aluno.idAluno = " + idAluno.toString() +
" and rh.inFuncao = " + 0 +
" and rh.boBolsista = true " +
" and programa.dtInicio > projeto.dtFim " ;


Att,

--
Denise Viana - Desenvolvimento FabriQ
E-mail: denise...@fabriq.com.br
Fone: (92) 9144-1624
FabriQ Informática Ltda - www.fabriq.com.br

thiago moraes

unread,
Jun 9, 2010, 3:53:11 PM6/9/10
to jav...@googlegroups.com
Desculpe, mas não conheço este tipo de sintaxe.

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-joins


2010/6/9 Denise Viana <denise...@gmail.com>

--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para jav...@googlegroups.com



--
Thiago Alves de Moraes
thiag...@gmail.com

Sérgio Fantin

unread,
Jun 9, 2010, 3:54:40 PM6/9/10
to jav...@googlegroups.com
Olá Denise,

Não entendi exatamente o que você precisa.

já viu o SQL gerado baseado nesse HQL?

Algumas ferramentas com o Squirrel, Hibernate Tools fazem isso pra você.

Abraços...

2010/6/9 Denise Viana <denise...@gmail.com>
--
Você recebeu essa mensagem por que é membro do "JavaSF: JavaServer Faces Group" em http://groups.google.com/group/javasf
Para postar no grupo envie para jav...@googlegroups.com



--
Sérgio Fantin
http://serjaum.wordpress.com

Denise Viana

unread,
Jun 10, 2010, 2:33:22 PM6/10/10
to jav...@googlegroups.com
Olha o errro:

10/06/2010 14:28:16 org.hibernate.hql.ast.ErrorCounter reportError
SEVERE: line 1:126: unexpected token: where
10/06/2010 14:28:16 org.hibernate.hql.ast.ErrorCounter reportError
SEVERE: line 1:245: unexpected token: 2
10/06/2010 14:28:16 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.Exception: Erro na incluso dos dados.
    at sicprocomp.dao.impl.AreaDao.tratarErro(AreaDao.java:544)
    at sicprocomp.dao.impl.AreaDao.isAlunoAlocado(AreaDao.java:383)
    at sicprocomp.servico.impl.AreaServico.isAlunoAlocado(AreaServico.java:88)
    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:281)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:199)
    at $Proxy12.isAlunoAlocado(Unknown Source)
    at pesquisador.managedbean.BeanCadastrarProjetoPibic.salvarProjetoRH(BeanCadastrarProjetoPibic.java:2139)
    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.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
    at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
    at javax.faces.component.UICommand.broadcast(UICommand.java:109)
    at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:184)
    at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:162)
    at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:350)
    at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    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:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: where near line 1, column 126 [ select rh  from sicprocomp.negocio.Projeto projeto, sicprocomp.negocio.ProjetoRH rh, sicprocomp.negocio.Programa programa,  where programa.idPrograma = projeto.programa.idPrograma and projeto.idProjeto = rh.idProjeto  and projeto.inTipo in (1,2)  and projeto.inStatusProjeto not in (5,4,13,14,12)  and projeto.idProjeto = rh.idProjeto  and programa.idPrograma = projeto.programa.idPrograma  and programa.boAtivo = true  and rh.aluno.idAluno = 1122 and rh.inFuncao = 0 and rh.boBolsista =  true  and programa.dtInicio > projeto.dtFim ]
    at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
    at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
    at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
    at sicprocomp.dao.impl.AreaDao.isAlunoAlocado(AreaDao.java:375)
    at sicprocomp.servico.impl.AreaServico.isAlunoAlocado(AreaServico.java:88)
    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:281)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:199)
    at $Proxy12.isAlunoAlocado(Unknown Source)
    at pesquisador.managedbean.BeanCadastrarProjetoPibic.salvarProjetoRH(BeanCadastrarProjetoPibic.java:2139)
    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.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
    at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
    at javax.faces.component.UICommand.broadcast(UICommand.java:109)
    at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:184)
    at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:162)
    at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:350)
    at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:173)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    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:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)


Consulta:


String query =

                " select rh " +
                " from Projeto projeto, ProjetoRH rh, Programa programa, " +
                " where programa.idPrograma = projeto.programa.idPrograma" +

                " and projeto.idProjeto = rh.idProjeto " +
                " and projeto.inTipo in (@tipoProjeto) " +

                " and projeto.inStatusProjeto not in (@statusProjeto) " +
                " and projeto.idProjeto = rh.idProjeto " +
                " and programa.idPrograma = projeto.programa.idPrograma " +
                " and programa.boAtivo = true " +
                " and rh.aluno.idAluno = " + idAluno.toString() +
                " and rh.inFuncao = " + 0 +
                " and rh.boBolsista =  true " +
                " and programa.dtInicio > projeto.dtFim " ;
       
            query = query.replace(
                         "@tipoProjeto",
                         String.valueOf( Projeto.TIPO_PIBIC ) + "," +
                         String.valueOf( Projeto.TIPO_PIBIC_JR ));
           
            query = query.replace(
                        "@statusProjeto",
                        String.valueOf( Projeto.STATUS_NAO_RECOMENDADO ) + "," +
                        String.valueOf( Projeto.STATUS_RECOMENDADO_COM_RESTRICAO ) + "," +
                        String.valueOf( Projeto.STATUS_CANCELADO ) + "," +
                        String.valueOf( Projeto.STATUS_EXCLUIDO ) + "," +
                        String.valueOf( Projeto.STATUS_CONCLUIDO)
                    );

Att,

Thiago Araújo

unread,
Jun 10, 2010, 3:54:25 PM6/10/10
to jav...@googlegroups.com
Olha essa link do stacktrace:
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: where near line 1, column 126n


" select rh " +
                " from Projeto projeto, ProjetoRH rh, Programa programa, " +

retira essa virgula do final da linha do alias programa

[]'s

2010/6/10 Denise Viana <denise...@gmail.com>



--
Thiago Araujo da Silva
Analista de Sistemas
Tecnólogo em Processamento de Dados
Especialista em Desenvolvimento de Aplicações em Java

Thiago Araújo

unread,
Jun 10, 2010, 3:56:55 PM6/10/10
to jav...@googlegroups.com
haaa e uma dica tente não usar o valor direto nas queries, use algum dos metodos da query como query.setString(), query.setInteger()

[]'s

Denise Viana

unread,
Jun 10, 2010, 4:32:48 PM6/10/10
to jav...@googlegroups.com
Obrigada Thiago Araújo,  mas agora deu outro erro  ahuahauhuahua  ninguém merece



org.hibernate.QueryException: could not resolve property: idProjeto of: sicprocomp.negocio.ProjetoRH [ select rh  from sicprocomp.negocio.Projeto projeto, sicprocomp.negocio.ProjetoRH rh, sicprocomp.negocio.Programa programa  where programa.idPrograma = projeto.programa.idPrograma and projeto.idProjeto = rh.idProjeto  and projeto.inTipo in (1,2)  and projeto.inStatusProjeto not in (5,4,13,14,12)  and projeto.idProjeto = rh.idProjeto  and programa.idPrograma = projeto.programa.idPrograma  and programa.boAtivo = true  and rh.aluno.idAluno = 1122 and rh.inFuncao = 0 and rh.boBolsista =  true  and programa.dtInicio > projeto.dtFim ]
    at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43)
    at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:37)
    at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1312)
    at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279)
    at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:386)
    at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:505)
    at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:223)
    at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:174)
    at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
    at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
    at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:727)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1216)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4041)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3528)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1690)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1687)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
10/06/2010 16:31:27 org.apache.catalina.core.StandardWrapperValve invoke
====================================================================================

Thiago Araújo

unread,
Jun 10, 2010, 9:28:43 PM6/10/10
to jav...@googlegroups.com
tenta substituir as atribuições diretas de valores por os metodos q eu sitei acima, query.setString, query.setInteger...
dai no sql vc põe o nome do seu parametro declarado no metodo e ve o q acontece.

2010/6/10 Denise Viana <denise...@gmail.com>
Reply all
Reply to author
Forward
0 new messages