Como popular uma classe, a qual não existe tabela correspondente no banco ? Usando hibernate

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 :frowning:

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;
	}

.
.
.