[Resolvido] Hibernate - "not in", como fazer de maneira simples?  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline

Pessoal, seguinte

Tenho 3 tabelas/objetos... Operacao, ControleOperacao, e SubOperacao

Como deve ser bem óbvio, ControleOperacao e SubOperacao possuem objetos Operacao (da tabela Operacao) dentro delas...

O que eu gostaria de fazer é: selecionar todos os objetos Operacao, que NÃO estão nas duas tabelas ControleOperacao e SubOperacao... se fosse ao contrário até que seria fácil, mas para esse caminho inverso, não consegui chegar em nenhuma conclusão "limpa"... o que fiz foi:
- Selecionar todos da tabela Operacao em uma lista
- Selecionar todos (não repetidos) da tabela ControleOperacao e subtrair da lista de Operacao
- Selecionar todos (não repetidos) da tabela SubOperacao e subtrair da lista de Operacao
Desse jeito, tenho apenas os objetos Operacao que não estão nas duas tabelas mencionadas... mas achei esse método meio porco e um tanto custoso, pois faz um full select das tabelas, isso vai causar problemas quando a demanda for grande e a tabela estiver muito grande...

Alguma maneira fácil de resolver isso?

Obrigado!

This message was edited 1 time. Last update was at 06/03/2009 08:33:04

sbguimaraes
Thread.start()

Membro desde: 21/02/2007 02:37:00
Mensagens: 49
Offline

Amigo tenta dessa forma !!!


from Operacao op where op.id not in (select co.op.id from ControleOperacao co)
and op.id not in(select sub.op.id from SubOperacao sub);


espero ter ajudado !!!
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline

Cara, muito bom... não cheguei a pensar em usar HQL, não estou acostumado, mas funcionou direitinho, apenas alguns ajustes nos nomes dos atributos...

Muito obrigado... agora vou até começar a estudar mais sobre HQL, ele quebra um galho imenso...
marcelo.bellissimo
Virtual Machine Man

Membro desde: 17/10/2006 14:17:21
Mensagens: 617
Offline

Apenas para referência, se alguem quiser saber como foi feito, aqui o código HQL:


 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team