Galera seguinte, eu tenho uma tabela de cidades e uma de estados, em cidades em tenho 2 pks, uma que eh a da cidade e outra q eh da uf q ta ligada tbm por fk. Ai eu mapei isso em forma de objeto no hibernate. O problema eh que quando eu dou um comando get na tabela cidade, ele so puxa os dados de cidade, e o objeto uf fica vazio. Porem se eu faço um HQL “from CidadeBean” e pego qualquer registro, ele vem completo, pq isso acontece? Agradeço
Vou colocar o codigo pra que fique mais claro o problema.
Eu tenho o mapeamento de cidade:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 09/04/2008 15:10:12 by Hibernate Tools 3.2.0.CR1 -->
<hibernate-mapping>
<class name="br.com.erpofm.bean.CidadeBean" table="admin.tb_cidade" lazy="true">
<comment>Tabela de Cidades</comment>
<composite-id>
<key-property column="cod_cidade" name="codCidade"/>
<key-many-to-one column="cod_uf" name="uf" class="br.com.erpofm.bean.UfBean" />
</composite-id>
<property name="nomCidade" column="nom_cidade" type="string" />
<property name="codFornecedorPrefeitura" column="cod_fornecedor_prefeitura" type="string" />
...
Tenho o bean de cidade
private Integer codCidade;
private UfBean uf;
private String nomCidade;
private String codFornecedorPrefeitura;
private String numCepPadrao;
private String numCidadeInscricaoEstadual;
...
O mapeamento de Uf
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 09/04/2008 15:10:12 by Hibernate Tools 3.2.0.CR1 -->
<hibernate-mapping>
<class name="br.com.erpofm.bean.UfBean" table="admin.tb_uf" lazy="true">
<comment>Tabela de Ufs</comment>
<id name="codUf" column="cod_uf" />
<property name="nomUf" column="nom_uf" type="string" />
<property name="pctAliquotaIcms" column="pct_aliquota_icms" type="string" />
...
E o bean de Uf
private String codUf;
private String nomUf;
private String pctAliquotaIcms;
private String dscMascaraInscricaoEstadual;
private String dthCriacao;
private String codUsuarioCriacao;
...
Quando eu chamo:
CidadeBean cb = new CidadeBean();
cb.setCodCidade(2);
UfBean uf = new UfBean();
uf.setCodUf("AL");
cb.setUf(uf);
GenericDAO gd = new GenericDAO();
cb = (CidadeBean)gd.getSession().get(CidadeBean.class, cb);
System.out.println(cb.getNomCidade());
System.out.println(cb.getUf().getNomUf());
O nome cidade vem, mais o dados de Uf nao. Ele faz a consulta corretamente, porem so na tabela de Cidade, ele nao vai na tabela de Uf para trazer os dados de Uf. Porem se eu executo usando um HQL “from CidadeBean”, ele me traz tudo certinho.