1
resposta

Erro Inner Join Hibernate

Pessoal bom dia, é meu projeto com java mvc utilizando Hibernate. Preciso executar a junção de duas "tabelas" utilizando o inner join. Meu codigo abaixo se seleciono somente uma tabela, funciona normal. Quando adiciono o join ele para de funcionar:

    public List<GrupoPaginas> listargrupopaginas(int id) {
        return manager.createQuery("select g.id, g.descricao, g.icone from GrupoPaginas g inner join Acessos a on a.idgrupo = a.id where g.situacao = 'A'", GrupoPaginas.class).setParameter("id", id).getResultList();
    }

O erro que me apresenta é esse:

Type Exception Report

Message Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [select g.id, g.descricao, g.icone from br.com.phfsistemas.portalfornecedor.models.GrupoPaginas g inner join Acessos a on a.idgrupo = a.id where g.situacao = 'A']

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [select g.id, g.descricao, g.icone from br.com.phfsistemas.portalfornecedor.models.GrupoPaginas g inner join Acessos a on a.idgrupo = a.id where g.situacao = 'A']
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
1 resposta

Troca a query para:

"select g.id, g.descricao, g.icone from GrupoPaginas g inner join Acessos a where a.idgrupo = a.id and g.situacao = 'A'"