Boa tarde.
Estou usando Hibernate em minha aplicação e é meio primeiro contato como este framework. Achei ele muito útil, mas agora me deparei com um problema :
Tenho as tabelas :
t064ceplogradouro,
t063cepbairro,
t062cepcidade
cada uma delas tem sua classe respectiva no banco ex:
@Entity
@Table(name="t062cepcidade", schema="florenca")
public class CepCidadeVO extends VO {
@Transient
private static final long serialVersionUID = 4810382905797799053L;
@Transient
Collection <CepBairroVO> cepBairroVo;
@Transient
Collection <CepLogradouroVO> cepLogradouroVo;
@Id
@SequenceGenerator(name="id", sequenceName="florenca.seq_t062")
@GeneratedValue(strategy=GenerationType.AUTO, generator="id")
@Column(name="codcidade062", nullable=false)
private Integer codCidade;
@Column(name="codpais060", nullable=false)
private Integer cepPaisVO;
@Column(name="codestado061")
private Integer cepUF;
.
.
.
gets and sets
Como podem ver estou usando anotations.
Mas agora preciso popular criar umas list endereços :
public class Endereco{
private String nomeCidade;
private String nomeBairro;
.
.
.
}
o comando select que me trará estes dados é
select
florenca.t064ceplogradouro.nome064 as cidade,
florenca.t063cepbairro.nome063 as bairro,
florenca.t062cepcidade.nome062 as cidade
from
florenca.t064ceplogradouro,
florenca.t063cepbairro,
florenca.t062cepcidade
where
numcep064 = '81930480'
and
florenca.t064ceplogradouro.codbairroinicial063 = florenca.t063cepbairro.codbairro063
and
florenca.t063cepbairro.codcidade062 = florenca.t062cepcidade.codcidade062;
será que vai ter como fazer usando o hibernate ?
fiz várias tentativas com o critéria mas não obtive sucesso 
obrigado a todos que ajudarem !
Obrigado a todos que responderam …
Resolvi o problema dessa forma :
package br.com.esfera.model.entidade.dao;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import br.com.esfera.model.entidade.vo.EnderecoVO;
import br.com.esfera.persistence.DAO;
import br.com.esfera.persistence.HibernateUtil;
public class EnderecoDAO extends DAO<EnderecoVO>{
@SuppressWarnings("unchecked")
public List<EnderecoVO> getListaEnderecosPorCEP(String cep){
/*
* Retorna ula lista de enderecos que possui o CeP
* recebido como parametro
*
* */
Session s = HibernateUtil.getSession();
String sql = montaSQLConsultaEndPorCep(cep);
List<Object> l = s.createSQLQuery(sql).list();
List<EnderecoVO> eList = new ArrayList<EnderecoVO>();
for(int y=1; y<=l.size(); y++){
Object [] o= (Object[]) l.get(y-1);
EnderecoVO e = new EnderecoVO();
/*
* As linhas abaixo preenchem um ArrayList de com objetos do tipo EnderecoVO
* */
e.setCodLogradouro((Integer)o[0]);
e.setTpLogradouro((String) o[1]);
e.setLogradouro((String) o[2]);
e.setCodBairro((Integer) o[3]);
e.setBairro((String) o[4]);
e.setCodCidade((Integer) o[5]);
e.setCidade((String) o[6]);
e.setCodEstado((Integer) o[7]);
e.setEstado((String) o[8]);
e.setCodPais((Integer) o[9]);
e.setPais((String) o[10]);
eList.add(e);
}
s.close();
return eList;
}
public static String montaSQLConsultaEndPorCep(String cep){
StringBuilder sql = new StringBuilder();
sql.append(" select");
sql.append(" florenca.t064ceplogradouro.codlogradouro064 as CodLogradouro,");
sql.append(" florenca.t064ceplogradouro.tipo064 as Tipologradouro,");
sql.append(" florenca.t064ceplogradouro.nome064 as logradouro, ");
sql.append(" florenca.t063cepbairro.codbairro063 as CodBairro,");
sql.append(" florenca.t063cepbairro.nome063 as bairro,");
sql.append(" florenca.t062cepcidade.codcidade062 as codCidade,");
sql.append(" florenca.t062cepcidade.nome062 as cidade,");
sql.append(" florenca.t061cepuf.codestado061 as codUF,");
sql.append(" florenca.t061cepuf.nome061 as UF,");
sql.append(" florenca.t060ceppais.codpais060 as codPais,");
sql.append(" florenca.t060ceppais.nome060 as Pais");
sql.append(" from");
sql.append(" florenca.t064ceplogradouro,");
sql.append(" florenca.t063cepbairro,");
sql.append(" florenca.t062cepcidade,");
sql.append(" florenca.t061cepuf,");
sql.append(" florenca.t060ceppais");
sql.append(" where");
sql.append(" numcep064 = '"+cep+"'");
sql.append(" and");
sql.append(" florenca.t064ceplogradouro.codcidade062 = florenca.t062cepcidade.codcidade062");
sql.append(" and");
sql.append(" florenca.t064ceplogradouro.codbairroinicial063 = florenca.t063cepbairro.codbairro063");
sql.append(" and");
sql.append(" florenca.t064ceplogradouro.codbairrofinal063 = florenca.t063cepbairro.codbairro063");
sql.append(" and ");
sql.append(" florenca.t063cepbairro.codcidade062 = florenca.t062cepcidade.codcidade062");
sql.append(" and");
sql.append(" florenca.t062cepcidade.codestado061 = florenca.t061cepuf.codestado061");
sql.append(" and");
sql.append(" florenca.t062cepcidade.codpais060 = florenca.t060ceppais.codpais060");
sql.append(" and");
sql.append(" florenca.t061cepuf.codpais060 = florenca.t060ceppais.codpais060");
return sql.toString();
}
}
package br.com.esfera.persistence;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import br.com.esfera.model.adm.vo.AreaVO;
import br.com.esfera.model.adm.vo.CargoVO;
import br.com.esfera.model.adm.vo.ContatoVO;
import br.com.esfera.model.adm.vo.DepartamentoVO;
import br.com.esfera.model.adm.vo.EmpresaVO;
import br.com.esfera.model.adm.vo.PerfilAreaVO;
import br.com.esfera.model.adm.vo.PerfilUsuarioVO;
import br.com.esfera.model.adm.vo.PerfilVO;
import br.com.esfera.model.adm.vo.UsuarioVO;
import br.com.esfera.model.cadastro.vo.CepBairroVO;
import br.com.esfera.model.cadastro.vo.CepCidadeVO;
import br.com.esfera.model.cadastro.vo.CepLogradouroVO;
import br.com.esfera.model.cadastro.vo.CepPaisVO;
import br.com.esfera.model.cadastro.vo.CepUFVO;
import br.com.esfera.model.entidade.vo.EntidadeEnderecoVO;
import br.com.esfera.model.entidade.vo.EntidadeVO;
import br.com.esfera.model.entidade.vo.TipoEnderecoVO;
import br.com.esfera.model.financeiro.vo.BancoCaixaVO;
import br.com.esfera.model.financeiro.vo.ContaPrazoContratoVO;
import br.com.esfera.model.financeiro.vo.ContaVistaVO;
import br.com.esfera.model.financeiro.vo.GrupoContaVO;
import br.com.esfera.model.financeiro.vo.Lancamento;
import br.com.esfera.model.financeiro.vo.TipoDocumentoVO;
public class HibernateUtil {
private static SessionFactory sessionFactory;
private static void createSessionFactory() {
sessionFactory = (new AnnotationConfiguration())
/*
* Administração
*/
.addPackage("br.com.esfera.model.adm.vo")
.addAnnotatedClass(CargoVO.class)
.addAnnotatedClass(AreaVO.class)
.addAnnotatedClass(DepartamentoVO.class)
.addAnnotatedClass(ContatoVO.class)
.addAnnotatedClass(UsuarioVO.class)
.addAnnotatedClass(PerfilVO.class)
.addAnnotatedClass(EmpresaVO.class)
.addAnnotatedClass(PerfilUsuarioVO.class)
.addAnnotatedClass(PerfilAreaVO.class)
/*
* Entidade
*/
.addPackage("br.com.esfera.model.entidade.vo")
.addAnnotatedClass(EntidadeVO.class)
.addAnnotatedClass(EntidadeEnderecoVO.class)
.addAnnotatedClass(TipoEnderecoVO.class)
/*
* Cadastrro
*/
.addPackage("br.com.esfera.model.cadastro.vo")
.addAnnotatedClass(CepBairroVO.class)
.addAnnotatedClass(CepCidadeVO.class)
.addAnnotatedClass(CepLogradouroVO.class)
.addAnnotatedClass(CepPaisVO.class)
.addAnnotatedClass(CepUFVO.class)
/*
* Financeiro
*/
.addPackage("br.com.esfera.model.financeiro.vo")
.addAnnotatedClass(BancoCaixaVO.class)
.addAnnotatedClass(ContaPrazoContratoVO.class)
.addAnnotatedClass(TipoDocumentoVO.class)
.addAnnotatedClass(ContaVistaVO.class)
.addAnnotatedClass(GrupoContaVO.class)
.addAnnotatedClass(Lancamento.class)
.configure().buildSessionFactory();
}
public static Session getSession(){
if(sessionFactory == null)
createSessionFactory();
return sessionFactory.openSession();
}
}
package br.com.esfera.model.entidade.vo;
import br.com.esfera.model.vo.VO;
public class EnderecoVO extends VO {
private String cep;
private String pais;
private Integer codPais; // tabela no banco
private String estado;
private Integer codEstado; // tabela no banco
private String cidade;
private Integer codCidade; // tabela no banco
private String bairro;
private Integer codBairro; // tabela no banco
private String logradouro;
private Integer codLogradouro; // tabela no banco
private String tpLogradouro;
private String numero;
private String complemento;
public String getCep() {
return cep;
}
.
.
.