Na minha aplicacao tenho uma tabela que eh formada por dois campos, esses dois sao chaves estrangeiras de outras tabelas, e nesta tabela, sao chaves primarias compostas. Como eu implemento isso no arquivo .hbm, e como a classe vai ficar implementada. Pois esta dando esse erro quando inicializo:
Mas de boa mesmo: você realmente precisa usar chaves primárias compostas? Se tiver opção esqueça, não faça isso.
Brucelee
Bem, eu tenho uma classe Endereco, e uma classe Telefone, de 1:N, até ai tudo bem. Gerei os arquivos .HBM pela ferramente middlegen 2.1. No meu banco de dados existe uma tabela TBL_ENDERECO_TELEFONE com dois campos de chave composta (CD_ENDERECO,CD_TELEFONE)
O arquivo de mapeamento .hbm para a classe EnderecoTelefone.java ficou:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping><classname="br.com.sistema.bancodados.beans.EnderecoTelefone"table="tbl_endereco_telefone"><metaattribute="class-description"inherit="false">@hibernate.class
table="tbl_endereco_telefone"
</meta><composite-idname="comp_id"class="br.com.sistema.bancodados.beans.EnderecoTelefonePK"><metaattribute="field-description"inherit="false">@hibernate.id
generator-class="assigned"
</meta><key-propertyname="cdEndereco"column="ENDE_COD_ENDERECO"type="java.lang.String"length="10"><metaattribute="field-description">@hibernate.property
column="ENDE_COD_ENDERECO"
</meta></key-property><key-propertyname="cdTelefone"column="TELE_COD_TELEFONE"type="java.lang.String"length="10"><metaattribute="field-description">@hibernate.property
column="TELE_COD_TELEFONE"
</meta></key-property></composite-id><!-- Associations --><!-- derived association(s) for compound key --><!-- bi-directional many-to-one association to TblTelefone --><many-to-onename="telefone"class="br.com.sistema.bancodados.beans.Telefone"update="false"insert="false"><metaattribute="field-description">@hibernate.many-to-one
update="false"
insert="false"
</meta><metaattribute="field-description">@hibernate.column
name="TELE_COD_TELEFONE"
</meta><columnname="TELE_COD_TELEFONE"/></many-to-one><!-- bi-directional many-to-one association to TblEndereco --><many-to-onename="endereco"class="br.com.sistema.bancodados.beans.Endereco"update="false"insert="false"><metaattribute="field-description">@hibernate.many-to-one
update="false"
insert="false"
</meta><metaattribute="field-description">@hibernate.column
name="ENDE_COD_ENDERECO"
</meta><columnname="ENDE_COD_ENDERECO"/></many-to-one><!-- end of derived association(s) --></class></hibernate-mapping>
Nota-se que vai existir a classe EnderecoTelefonePK, como ela sera implementada? E os metodos equals() e hashCode()? Como ficam? Vai ser necessario algum metodo getter para o composite-id?