Select Left Join - codgrupo em branco

Pessoal,

Quando coloco este campo , tab.cadgrupo.cadgrupoPK.codgrupo no select abaixo retorna 0 registros e tiro esta coluna do meu select ele retorna 24 registros
Fiz o select no banco e a coluna codgrupo esta em branco e gostaria de trazer os 24 registros mesmo que o codgrupo esteja em branco .

Alguem pode me ajudar ??

Fiz o seguinte select da seguinte forma .

               String query = "select i.tabproc.tabprocPK.codtab,i.tabproc.tabprocPK.codproc,i.cadguiasol.codbenef.codplano.abrangencia, tab.cadgrupo.cadgrupoPK.codgrupo from Itensguiasol i left join i.tabproc tab where i.status='L' and i.cadguiasol.status='L' and i.cadguiasol.codbenef.codbenef='"+codbenef+"'  order by i.itensguiasolPK.codguia,i.tabproc.tabprocPK.codproc";       

pelo que percebi , esta faltando ligar as chaves entre as tabelas …

desta forma ele vai listar todos os itens , inclusive os que não tem grupo …

Veja se é isto …

coloquei assim :


from Itensguiasol i  left join i.tabproc tab on i.codgrupo = tab.cadgrupo.cadgrupoPK.codgrupo 

porem esta dando erro abaixo :

line 1, column 304: unexpected token [on].

você esta usando hibernate ?

mande o seu código depois das alterações …

Aleksandro,

Segue abaixo o codigo completo :


               String query = "select i.tabproc.tabprocPK.codtab,i.tabproc.tabprocPK.codproc,i.tabproc.filmeM2,i.tabproc.ch,i.itensguiasolPK.codguia, i.seq,i.tabproc.cadsubgrupo.cadsubgrupoPK.codsubgrupo,i.tabproc.cadsubgrupo.cadsubgrupoPK.codtab,i.cadguiasol.codbenef.codplano.abrangencia from Itensguiasol i  left join i.tabproc tab on i.codgrupo = tab.cadgrupo.cadgrupoPK.codgrupo where i.status='L' and i.cadguiasol.status='L' and i.cadguiasol.codbenef.codbenef='"+codbenef+"'  order by i.itensguiasolPK.codguia,i.tabproc.tabprocPK.codproc";       
               return (List<Object>) emAux.createQuery(query).getResultList();            

putz tem um erro grosseiro ai …rsss agora q vi …coloquei o código alinhadinho e veja o seu erro aqui …

Observe que tem um “i” perdido por ai left join i.tabproc tab não deveria esta aqui …

portanto faça assim que deve funcionar …

Quando rolar este tipo de erro o ideal é sempre tirar o sql no console e rodar no seu BD direto …

coloquei dessa forma

from Itensguiasol i left join Tabproc tab on i.codgrupo = tab.cadgrupo.cadgrupoPK.codgrupo

porem deu erro abaixo :

java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing the query [select i.tabproc.tabprocPK.codtab,i.tabproc.tabprocPK.codproc,i.tabproc.filmeM2,i.tabproc.ch,i.itensguiasolPK.codguia, i.seq,i.tabproc.cadsubgrupo.cadsubgrupoPK.codsubgrupo,i.tabproc.cadsubgrupo.cadsubgrupoPK.codtab,i.cadguiasol.codbenef.codplano.abrangencia from Itensguiasol i left join tabproc tab on i.codgrupo = tab.cadgrupo.cadgrupoPK.codgrupo where i.status=‘L’ and i.cadguiasol.status=‘L’ and i.cadguiasol.codbenef.codbenef=‘104010012000009’ order by i.itensguiasolPK.codguia,i.tabproc.tabprocPK.codproc].
Internal Exception: org.eclipse.persistence.internal.libraries.antlr.runtime.EarlyExitException

vc esta usando o q ? hibernate, JPA, EclipseLink, outros ?

Aleksandro,

Estou usando eclipselink

faz assim e veja se rola …

String query = "select i from Itensguiasol i left join i.tabproc tab on i.codgrupo = tab.cadgrupo.cadgrupoPK.codgrupo where i.status='L' and i.cadguiasol.status='L' and i.cadguiasol.codbenef.codbenef='"+codbenef+"' order by i.itensguiasolPK.codguia,i.tabproc.tabprocPK.codproc"; RETURN (List <Object>) emAux.createQuery(query).getResultList();

aleksandro

deu erro :

Exception Description: Syntax error parsing the query [select i.tabproc.tabprocPK.codtab,i.tabproc.tabprocPK.codproc,i.tabproc.filmeM2,i.tabproc.ch,i.itensguiasolPK.codguia, i.itensguiasolPK.id,i.tabproc.cadsubgrupo.cadsubgrupoPK.codsubgrupo,i.tabproc.cadsubgrupo.cadsubgrupoPK.codtab,i.cadguiasol.codbenef.codplano.abrangencia from Itensguiasol i left join i.tabproc tab on i.codgrupo = tab.cadgrupo.cadgrupoPK.codgrupo where i.status=‘L’ and i.cadguiasol.status=‘L’ and i.cadguiasol.codbenef.codbenef=‘104010012000008’ order by i.itensguiasolPK.codguia,i.tabproc.tabprocPK.codproc], line 1, column 317: unexpected token [on].
Internal Exception: NoViableAltException(80@[()* loopback of 477:9: (node= join )*])

[quote=evandro_araujo]aleksandro

deu erro :

Exception Description: Syntax error parsing the query [select i.tabproc.tabprocPK.codtab,i.tabproc.tabprocPK.codproc,i.tabproc.filmeM2,i.tabproc.ch,i.itensguiasolPK.codguia, i.itensguiasolPK.id,i.tabproc.cadsubgrupo.cadsubgrupoPK.codsubgrupo,i.tabproc.cadsubgrupo.cadsubgrupoPK.codtab,i.cadguiasol.codbenef.codplano.abrangencia from Itensguiasol i left join i.tabproc tab on i.codgrupo = tab.cadgrupo.cadgrupoPK.codgrupo where i.status=‘L’ and i.cadguiasol.status=‘L’ and i.cadguiasol.codbenef.codbenef=‘104010012000008’ order by i.itensguiasolPK.codguia,i.tabproc.tabprocPK.codproc], line 1, column 317: unexpected token [on].
Internal Exception: NoViableAltException(80@[()* loopback of 477:9: (node= join )*])
[/quote]

Tá estranho porque o select q falei para você rodar não tinha nenhuma coluna selecionada , apenas select i from … e por ai vai … faz o seguinte limpe o seu projeto, coloque o select do jeito q falei para vc na msg anterior e se der o erro apontando o on , tira este pedaço do código aqui on i.codgrupo = tab.cadgrupo.cadgrupoPK.codgrupo e roda d novo…abs