[Hibernate] É possível fazer um UNION de Tabelas?

7 respostas
the_negao

Pessoal,

Vê se vocês podem me ajudar…

Tenho duas entidades: Membros e Casais (duas chaves estrangeira para Membros). Tanto o membro quanto o casal possuem data de aniversário.

Para gerar a lista de aniversariantes eu faço assim em SQL:

(SELECT membro_nome AS MEMBRO, membro_data_nascimento AS ANIVER FROM membros WHERE (membro_data_nascimento LIKE '%/11/%')) UNION ALL (SELECT C.casal_nome AS MEMBRO, C.casal_data_casamento AS ANIVER FROM casais C INNER JOIN membros A ON A.membro_id = C.casal_esposo_id INNER JOIN membros B ON B.membro_id = C.casal_esposa_id WHERE (casal_data_casamento LIKE '%/11/%')) ORDER BY ANIVER;

Meu problema é que não estou conseguindo fazer esse processo através do Criteria do Hibernate.

Alguma sugestão?

Ah! Como faço um alias de um campo da tabela pelo criteria? E um Union de tabelas?

Agradeço desde já…

7 Respostas

plentz

Ainda não:

http://opensource.atlassian.com/projects/hibernate/browse/HHH-1050

the_negao

Acabei tendo que usar:

  • PreparedStatement
  • ResultSet
  • E usando Hibernate para pegar a Connection

Só não entendo porque uma função simples o Hibernate não permite!
:cry:

plentz

Bom, você pode fazer 2 consultas separadas e juntar o resultados das listas…

the_negao

O problema é que eu acho que seria mais custoso juntar duas listas e depois ordená-las por ordem de Data.

E com o ResultSet eu naõ preciso trazer todos os campos da tabela.

Mas valeu a sugestão!

plentz

Com Hibernate também não.

the_negao

Ae Plentz, demorou cara!

Ensina ae como posso restrigir alguns campos pelo Hibernate!

Valeu ae, desde já!

plentz

Ué, simples.

select m.nome, m.idade, m.telefone from Membro

Isso vai te retornar um Object[] a princípio, e ele só vai colocar os campos selecionados na query :wink:

Criado 6 de novembro de 2006
Ultima resposta 8 de nov. de 2006
Respostas 7
Participantes 2