Hibernate HQL -*** RESOLVIDO ***

4 respostas
airton.asg
from notaFiscal nf inner join fetch nf.itensNotaFiscal itensNF Where nf.notaFiscalid = 15

Boa Noite pessoal, tenho esta HQL acima, não sei o que acontece, estou tentando trazer uma única nota fiscal, porém quando executo a mesma, tenhu um resultado de varias notas fiscais, a mesma quantidade de itens, ou seja, ele esta trazendo 1(uma) nota fiscal para cada item.

Alguem saberia me explicar onde estou errando ???

Valew pessoal!!!

4 Respostas

jfnando

kra, eu acho q tah certo…

tenta dar um select distinct nr_nf from …

entendeu?

Falows

aoqfonseca

Tenta fazer

from NotaFiscal nf where nf.notaFiscalId = 15

Acho que isso vai funcionar

Luiz_Henrique_Coura

isso é normal. são vários itens relacionados a uma mesma nota fiscal. o resultset retornado irá trazer dessa forma mesmo.

o q vc tem q fazer é sobrescrever os métodos equals() e hashcode() das suas entidades para garantir uma identidade única para seus objetos. dê uma olhada na referência do hibernate se vc tiver alguma dúvida.

o distinct funciona, mas é uma operação lenta no banco. e se não me engano, o hibernate também precisa dos métodos equals() e hashcode() sobrescritos para garantir a identidade única dos objetos.

depois q vc sobrescrever seus métodos equals() e hashcode() utilize Set para garantir um único objeto no seu resultado, assim vc não precisa utilizar distinct.

Query query = session.createQuery( "SUA HQL" );
Set set = new HashSet( query.list() );
airton.asg

Então… eu tava tentanto fugir de colocar os resusltados em um Set, os métodos equals() e hashcode() até estavam sobrescritos, mas mesmo assim, retornavar registros duplicados.

Mas galera, valew pela força, e vlw ai Luiz Henrique…

Ateh a Próxima…

Resolvido…

Criado 14 de junho de 2006
Ultima resposta 19 de jun. de 2006
Respostas 4
Participantes 4