Mapeamento do Hibernate não acho o erro

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])

Porque você não usa simplesmente duas relações many-to-many?