Exemplo de pesquisa com 1:1 hibernate 3

4 respostas
marcioguj

Olá a todos,

Alguem tem algum exemplo de como fazer uma consulta  1:1 com hibernate usando HQL?

4 Respostas

M

Fala marcioguj.

Cara eu não entendi direito esse 1:1 que vc fez mas vou te passar alguns exemplos de HQL.
Os exemplos que eu vo passar abaixo serão com base nas classes Cliente e Endereço, que estão abaixo.

public class Cliente{
                 private Long idCliente;
                 private Endereco endereco;
         }

          public class Endereco{
                 private Long idEndereco;
         }

Select para trazer todos os objetos cliente populados:

SELECT c FROM Cliente

Select para trazer um cliente especifico:

SELECT c FROM Cliente c WHERE c.idCliente= :idCliente //Esse idCliente é passado como parâmetro para a consulta

Select para trazer um cliente com o objeto endereço populado

SELECT c FROM Cliente c 
LEFT JOIN FETCH c.endereco e

Select para trazer um cliente sem popular o objeto endereço, mas fazendo um filtro por endereço

SELECT c FROM Cliente c 
LEFT JOIN c.endereco e
WHERE e.idEndereco = :idEndereco  //esse idEndereço pode ser passado como parâmetro para a consulta

Repare nas consultas acima, que quando eu faço o LEFT JOIN FETCH eu trago o objeto populado, mas se for feito só o LEFT JOIN ele ja não é populado.

Espero ter solucionado a tua duvida, mas qualquer coisa posta ai…

Falow

marcioguj

Cara e esse exemplo que estava precisando! muito obrigado! eu preciso trazer o objeto do endereco populado. Estava usando varios metodos, sendo que um join resolve. Vou implementar aqui. O relacionamento e assim:

//entidade pessoa
@OneToOne(mappedBy="pessoa")
	public Endereco getEndereco() {
		return endereco;
	}
	
//entidade endereco
@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name="pes_id")
	public Pessoa getPessoa() {
		return pessoa;
	}
M

marcioguj:
Cara e esse exemplo que estava precisando! muito obrigado! eu preciso trazer o objeto do endereco populado. Estava usando varios metodos, sendo que um join resolve. Vou implementar aqui. O relacionamento e assim:

//entidade pessoa
@OneToOne(mappedBy="pessoa")
	public Endereco getEndereco() {
		return endereco;
	}
	
//entidade endereco
@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name="pes_id")
	public Pessoa getPessoa() {
		return pessoa;
	}

Hein, entre nesse link abaixo e baixe a apostila PERSISTÊNCIA COM JPA2 E HIBERNATE…
E de uma lida na parte que fala sobre JPQL, ou pesquise no google mesmo, que vc vai achar bastante coisa sobre o assunto…
http://k19.com.br/downloads/apostilas-java

marcioguj

Valeu! vou baixar a apostila!

Criado 5 de janeiro de 2012
Ultima resposta 6 de jan. de 2012
Respostas 4
Participantes 2