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

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á…

Ainda não:

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

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:

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

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!

Com Hibernate também não.

Ae Plentz, demorou cara!

Ensina ae como posso restrigir alguns campos pelo Hibernate!

Valeu ae, desde já!

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: