Retornar de duas tabelas para objeto, camadas, hibernate
3 respostas
R
rodrigo.470
olá, tenho esses códigos abaixo, em camadas com hibernate,retornando dados de uma tabela, porém precisava também retornar da tabela cidade, ou seja retornar dados de duas tabelas,para o mesmo objeto.
Continuarei pesquisando, mas se puderem ajudar agradeço.
//RNpublicEnderecobuscaEndereco(StringENDERECO_CEP){//throw new UnsupportedOperationException("Not yet implemented");EnderecoPersendPers=newEnderecoPers();returnendPers.buscaEndereco(ENDERECO_CEP);
//PerspublicEnderecobuscaEndereco(StringENDERECO_CEP){//throw new UnsupportedOperationException("Not yet implemented");Conexao1con=newConexao1();QuerybuscaE=con.session.createQuery("from Endereco where endereco_cep=:pcep");buscaE.setString("pcep",ENDERECO_CEP);Enderecoendereco=null;if(buscaE.list().iterator().hasNext()){endereco=(Endereco)buscaE.list().get(0);}con.desconectar();returnendereco;}
bom, se vc estiver tendo um erro de lazy initialization, seu mapeamento de endereco para cidade deve estar como lazy certo? se for, o problema ocorre pq o hibernate não carrega a referencia, e quando vc tenta acessar aquele objeto sua session com hibernate já foi fechada, tente pegar o objeto cidade antes de encerrar a session, frameworks como Seam e Spring tratam muito bem disso, outra maneira de “contornar” e marcar o relacionamento como eager, o que é ruim em alguns casos, pois, sua pesquisa sempre carregará os dados amarrados, mesmo qnd vc não usa.
R
rodrigo.470
obrigado pela dica, porém este código só me retorna o nome da rua, que está na tabela endereco.
quanto a fazer com que retorne o bairro que está na tabela bairro eu não sei como fazer,
a sql até não é o problema.Mas acredito que tenha mais algoa ser feito.
até a parte de retornar somente a rua está funcionando ok.
O que não sei fazer é como retornar para o mesmo objeto dados de duas tabelas.
Esta parte eu não consegui fazer
obrigado
R
rodrigo.470
Olá, estou postando novamente os códigos, com algumas alterações,
porém ainda não consegui retornar os dados corretamente, agora está me dando o erro abaixo e na sequencia seguem os códigos.
Desde já agradeço!
//PerspublicclassBuscaEnderecoPers{publicEnderecoverificaEndereco(StringENDERECO_CEP){Conexao1con=newConexao1();QuerybuscaE=con.session.createSQLQuery("select bairro_descricao, cidade_descricao, endereco_logradouro, uf_sigla from bairro, cidade, endereco, uf "+"where endereco_cep="+ENDERECO_CEP+" and endereco.bairro_codigo=bairro.bairro_codigo and bairro.cidade_codigo=cidade.cidade_codigo and cidade.uf_codigo=uf.uf_codigo");buscaE.setString("pcep",ENDERECO_CEP);Enderecoendereco=newEndereco();BairroconsBairro=newBairro();CidadeconsCidade=newCidade();if(buscaE.list().iterator().hasNext()){consBairro.setBairroDescricao(buscaE.list().get(0).toString());consCidade.setCidadeDescricao(buscaE.list().get(1).toString());endereco.setEnderecoLogradouro(buscaE.list().get(2).toString());consBairro.setCidade(consCidade);endereco.setBairro(consBairro);}con.desconectar();returnendereco;}}