[HIBERNATE] Dúvida em busca por nome com 2 tabelas

66 views
Skip to first unread message

alesantos

unread,
Nov 15, 2010, 2:08:31 PM11/15/10
to Hibernate Brasil
Olá pessoal
Estou quebrando a cabeça com uma tela de busca e queria fazer do jeito
certo.
Tenho a tabela PACIENTE e a tabela EXAME, usando criteria, não estou
conseguindo fazer uma busca de todos os exames de um nome de paciente.

O sql disso é este:
Select cadexame.numero_exa, cadpacie.nompac_pac
from cadexame,cadpacie
where cadexame.codpac_exa = cadpacie.codigo_pac and
cadpacie.nompac_pac like '"+descBusca+"%'
ORDER BY cadpacie.nompac_pac ASC

Tenho q fazer um createCriteria(Paciente.class) p/ achar o paciente e
depois faço p/ o exame?
Ou vou ter q usar hql?

Desde já agradeço qualquer ajuda

abraço

Gabriel Magaton

unread,
Nov 15, 2010, 6:41:03 PM11/15/10
to hibernat...@googlegroups.com
Alessandro,

Vc precisa de um criteria que te retorne todos os exames com um filtro pelo nome do paciente.

Seria mais ou menos isto: (Não estou com o eclipse aberto, verifique se o nome dos enuns e chamada estão certos).

final DetachedCriteria criteria = DetachedCriteria.forClass(Exame.class);
criteria.createAlias("paciente", "paciente", FetchMode.JOIN); // se for LAZY inicializa com mode JOIN, ai precisa ver o melhor caso para nao dar produto cartesiano.
criteria.add(Restrictions.ilike("paciente.nome, descBusca, MathMode.START)); // busca pelo nome do paciente
criteria.addOrder(Order.asc("paciente.nome"));

ai é so usar o hibernate templete ou session e passar essa criteria.

segue a doc do hibernate, dá pra aprender bastante coisa lá.
http://docs.jboss.org/hibernate/core/3.5/reference/en/html/querycriteria.html#querycriteria-detachedqueries

Espero ter ajudado.

Gabriel


--
Você está recebendo esta mensagem porque se inscreveu no grupo "Hibernate Brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para hibernat...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para hibernate-bras...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/hibernate-brasil?hl=pt-BR.


alesantos

unread,
Nov 17, 2010, 11:46:55 AM11/17/10
to Hibernate Brasil
Gabriel, valeu pela resposta

Uma dúvida nessa linha:
criteria.createAlias("paciente", "paciente", FetchMode.JOIN);

Esse paciente seria um objeto instanciado dentro do bean de Exame e do
hxml??? Pq o meu nao tem! Tem q colocar essa referência?


obrigado

Gabriel Magaton

unread,
Nov 17, 2010, 11:51:41 AM11/17/10
to hibernat...@googlegroups.com
Não conheco seu modelo de dominio, mas pelo que você disse, esse paciente seria o atributo com "ManyToOne" da sua entidade Exame, sendo que um paciente tem muitos exames logo cada exame é de um paciente.

Reply all
Reply to author
Forward
0 new messages