Bom dia pessoal estou tentando realizar um mapeamento no Hibernate, só que estou me deparando com uma duvida…
Minhas classes:
public class Pais implements Serializable {
private Long codigo;
private String nome;
private Set moedas = new HashSet();
// metodos get e set
}
public class Moeda implements Serializable {
private String codigo;
private String descricao;
// metodos get e set
}
public class PaisMoeda implements Serializable {
private Moeda moeda;
private Pais pais;
// metodos get e set
}
Estrutura da minha tabela:
TB_PAIS
CD_PAIS (PK)
DC_NOME
TB_MOEDA
CD_MOEDA (PK)
DC_MOEDA
TB_PAIS_MOEDA
CD_MOEDA (PK, FK)
CD_PAIS (PK, FK)
Os meus mapeamentos ficaram assim (Pais, Moeda, PaisMoeda…)
<hibernate-mapping>
<class name="br.com.fts.ce.bean.Pais" table="TB_PAIS" lazy="false">
<id name="codigo" column="CD_PAIS" type="long">
<generator class="native" />
</id>
<property column="DC_PAIS" length="60" name="nome" not-null="true" type="string" />
<set name="moedas" table="TB_MOEDA">
<key column="CD_PAIS"/>
<many-to-many column="CD_MOEDA" class="br.com.fts.ce.bean.Moeda"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="br.com.fts.ce.bean.Moeda" table="TB_MOEDA" lazy="false">
<id name="codigo" column="CD_MOEDA" type="string">
<generator class="native" />
</id>
<property column="DC_MOEDA" length="60" name="descricao" not-null="true" type="string" />
</class>
</hibernate-mapping>
<hibernate-mapping package="br.com.fts.ce.bean">
<class name="br.com.fts.ce.bean.PaisMoeda" table="TB_PAIS_MOEDA" lazy="false">
<composite-id>
<key-many-to-one class="br.com.fts.ce.bean.Pais" column="CD_PAIS" name="PaisMoeda" />
<key-many-to-one class="br.com.fts.ce.bean.Moeda" column="CD_MOEDA" name="PaisMoeda"/>
</composite-id>
</class>
</hibernate-mapping>
Eu não tenho certeza que fiz tudo da maneira correta, o erro que ocorre não consegui consertar também…
Mapping ExceptionForeign key (FK5FBC698F2077DE3C:TB_MOEDA [CD_MOEDA])) must have same number of columns as the referenced primary key (TB_MOEDA [CD_PAIS,CD_MOEDA])