Pessoal. Sou iniciante em hibernate e tenho uma dúvida.
Preciso desenvolver um webservice que faça o acesso ao banco e devolva uma lista de elementos.
O que acontece é o seguinte.
Este método tem que executar uma query SQL (select * from…).
Este select faz vários joins entre várias tabelas e retorna 3 campos.
Estes três campos de retorno eu vou jogar em uma lista de objetos.
Os objetos desta lista são de uma classe que tem os 3 ítens que serão retornados. Por exemplo, a query retorna “cpf, nome, endereco”… eu tenho uma classe Pessoa com estes campos.
No que eu vi até agora de hibernate, para vc mapear uma classe você deve fazer algo do tipo:
@Entity @Table(name=“pessoas”)
public class Pessoa…
Mais isto funciona para quando você tem uma tabela com as colunas correspondentes aos atributos da classe que você vai mapear, certo?
Coomo eu mapeio uma classe que tem 3 campos que virão de uma consulta SQL contendo joins entre várias tabelas?
Como eu crio um método para executar esta querye e retornar os resultados em um List de objetos?
Valeu pessoal, agradeço muito se poderem me ajudar!!!
Bem isso, até onde eu sei, não da pra fazer. É preciso mapear cada uma das Tabelas em uma Classe.
Você pode fazer o seguinte, pra cada tabela no JOIN cria uma entidade com os atributos ‘correspondendo’ aos campos da tabela.
Feito isso, quando você for fazer o select você conseguiria usar uma query como
SELECT NEW SeuObjetoCom3Campos(p.campaA,b.campoB,d.campoC)FROM Pessoa p...
Mas no seu caso, se o WebService é simples assim você pode retornar os campos de uma query normal e montar o seu objeto manualmente, dentro de um laço.
Se você faz questão de usar o Hibernate ele faz querys nativas também, da mesma forma, mas não faz sentido usar uma biblioteca assim para algo simples, a menos que vc queira só estudar.
Um abraço, não sei se consegui te ajudar, se não for isso explica melhor ae
creio que não entendi bem seu problema. Se vc tem uma classe Pessoa anotada como
entidade,seus atributos devem estar sendo carregados a partir da tabela na qual ela
é persistida.Atributos que pertencem a outras entidades devem estar devidamente mapeados,
de acordo com a cardinalidade.Assim a função de seus joins fica “encapsulada”.
O exemplo do daveiga usando HQL pode te servir. Talvez te ajudasse também dar uma olhada
nos relacionamentos para mapear melhor as classes.