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

7 respostas
T

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

P

Ainda não:

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

T

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:

P

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

T

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!

P

Com Hibernate também não.

T

Ae Plentz, demorou cara!

Ensina ae como posso restrigir alguns campos pelo Hibernate!

Valeu ae, desde já!

P

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