Ajuda com minha QUERY no HIBERNATE

4 respostas
J

Galera, seguinte, fiz uma query no sql server que funciona, porém nao consigo rodar ela na minha aplicacao…

A query é esta:

StringBuffer qryBuffer = new StringBuffer();

qryBuffer.append("select ")

.append("manutencao.codigoManutencao, ")

.append("maquina.nomeMaquina, ")

.append("maquina.modeloMaquina, ")

.append("manutencao.dataManutencao, ")

.append("manutencao.motivo ")

.append("FROM Maquina maquina ")

.append("join Manutencao manutencao ")

.append("on maquina.codigoMaquina = ")

.append("manutencao.maquina.codigoMaquina ");
O erro é este:

net.sf.hibernate.QueryException: outer or full join must be followed by path expression [select manutencao.codigoManutencao, maquina.nomeMaquina, maquina.modeloMaquina, manutencao.dataManutencao, manutencao.motivo FROM br.com.projeto.sgoe.bean.Maquina maquina join Manutencao manutencao on maquina.codigoMaquina = manutencao.maquina.codigoMaquina ]

at net.sf.hibernate.hql.FromParser.token(FromParser.java:166)

at net.sf.hibernate.hql.ClauseParser.token(ClauseParser.java:87)

Já tentei com SQL puro mas tb dá erro…
// hbsql = "SELECT MANUTENCAO.MANUT_ID, MAQUINA.MAQUINA_IDENTIFICA, MAQUINA.MODELO, MANUTENCAO.DATA_MANUTENCAO, MANUTENCAO.MOTIVO " +
// "FROM MAQUINA INNER JOIN MANUTENCAO ON MAQUINA.MAQUINA_ID = MANUTENCAO.MAQUINA_ID ";

alguem ai pode me dar uma força para que eu consiga fazer este join ? não entendi o erro q ele deu… e nao tenho como montar o createSQLQuery pq ele pede 3 parametros e nao sei oq passo nas duas primeiras strings, fora o .class…

Já li na API do hibernate mas lá nao esta muito claro pra mim…

Obrigado

4 Respostas

plentz

O problema não seria o “manutencao.maquina” em…

.append("manutencao.maquina.codigoMaquina "); :?:

TedLoprao

E aí Juliano, seguinte seu Join está errado (ao menos se era para ser em HQL)… O correto seria:

select manutencao.codigoManutencao, 
         maquina.nomeMaquina, 
         maquina.modeloMaquina, 
         manutencao.dataManutencao, 
         manutencao.motivo 
FROM Manutencao as manutencao 
inner join manutencao.maquina as maquina

Aí depende de como estão mapeadas as suas classes…
Nesse exemplo o manutencao precisa ter uma referencia de maquina, ok

Fallow

J

Valeuuuuuuuu Ted…

Isso aí bixo agora funcionou… entendi oq ele fez heeh, e massa q ele gerou a mesma query q fiz no sql server… bacana mesmo !!!

Muito obrigado pela ajuda !

Falow :smiley: :smiley: :smiley:

diegoleao

mas e quando o nome dos IDS não é igual?

Por exemplo, quero usar como condição

“WHERE FUNCIONARIO.DEP_TRABALHA = DEPARTAMENTO.ID”

Criado 29 de abril de 2005
Ultima resposta 9 de jan. de 2007
Respostas 4
Participantes 4