Duvida sobre o primeiro mapeamento usando Hibernate 3

Boa noite pessoal, estou começando com Hibernate e estou me deparando com um problema com um relacionamento bem simples q estou fazendo para aprender mesmo.
No meu caso tenho 3 tabelas TB_EMPRESA, TB_MOEDA e TB_PARCEIRO que possuem a seguinte estrutura:

CREATE TABLE TB_EMPRESA (
    CD_EMPRESA       INTEGER NOT NULL,
    DC_RAZAO_SOCIAL  VARCHAR(60) NOT NULL,
    CD_MOEDA         VARCHAR(3),
  PRIMARY KEY (CD_EMPRESA),
  FOREIGN KEY (CD_MOEDA) REFERENCES TB_MOEDA (CD_MOEDA);
); 


CREATE TABLE TB_MOEDA (
    CD_MOEDA  VARCHAR(3) NOT NULL,
    DC_MOEDA  VARCHAR(60) NOT NULL,
  PRIMARY KEY (CD_MOEDA);   
);

CREATE TABLE TB_PARCEIRO (
    CD_EMPRESA        INTEGER NOT NULL,
    CD_PARCEIRO       INTEGER NOT NULL,
    DC_NOME_COMPLETO  VARCHAR(60) NOT NULL,
    DC_NOME_REDUZIDO  VARCHAR(40) NOT NULL,
    CD_MOEDA          VARCHAR(3),
 PRIMARY KEY (CD_EMPRESA, CD_PARCEIRO),
FOREIGN KEY (CD_EMPRESA) REFERENCES TB_EMPRESA (CD_EMPRESA),
FOREIGN KEY (CD_MOEDA) REFERENCES TB_MOEDA (CD_MOEDA)
);

Criei meus JavaBeans


public class Empresa implements Serializable {

	private Long codigo;
	private String razaoSocial;	
	private Moeda moeda;
	
	// meus metodos get, set, equals e hashCode
}


public class Moeda implements Serializable {

	private String codigo;
	private String descricao;

	// meus metodos get, set, equals e hashCode
}


public class Parceiro implements Serializable {

	private ParceiroPK id;
	private String nomeCompleto;
	private String nomeReduzido;
	private Moeda moeda;
	
	// meus metodos get, set, equals e hashCode
}

public class ParceiroPK implements Serializable {
	private Long codigo;
	private Empresa empresa;
	
	// meus metodos get, set, equals e hashCode
}

Criei meus mapeamentos

<hibernate-mapping>
    <class name="br.com.fts.bean.Empresa" table="TB_EMPRESA" >
        <id name="codigo" column="CD_EMPRESA" type="long">
			<generator class="sequence">
                <param name="sequence">GE_CD_EMPRESA</param>
	        </generator>
        </id>		

		<property column="DC_RAZAO_SOCIAL" length="60"  name="razaoSocial"  not-null="true"	type="string"      lazy="false"/>        
		<property 		><many-to-one class="br.com.fts.bean.Moeda" name="moeda" not-null="true">
			<column name="CD_MOEDA" />
		</many-to-one>        

    </class>
</hibernate-mapping>


<hibernate-mapping>
    <class name="br.com.fts.bean.Moeda" table="TB_MOEDA" >
		<id column="CD_MOEDA" name="codigo" type="string">
			<generator class="native" />
		</id>
		
		<property column="DC_MOEDA" length="60" name="descricao" not-null="true" type="string" lazy="false"/>        				    		
		
    </class>
</hibernate-mapping>    


<hibernate-mapping>
	<class name="br.com.fts.bean.Parceiro" table="TB_PARCEIRO">
	
		<composite-id class="br.com.fts.bean.ParceiroPK" name="id">
			<key-many-to-one class="br.com.fts.bean.Empresa" column="CD_EMPRESA" name="empresa" />
			<key-property column="CD_PARCEIRO" name="codigo" type="long"/>
		</composite-id>	
		
		<property column="DC_NOME_COMPLETO"	length="60"	name="nomeCompleto" not-null="true"  type="string"/>
		<property column="DC_NOME_REDUZIDO" length="40" name="nomeReduzido" not-null="true"  type="string"/>

		<many-to-one class="br.com.fts.bean.Moeda" name="moeda" not-null="true">
			<column name="CD_MOEDA" />
		</many-to-one>      	
	
	</class>
</hibernate-mapping>

Bem pessoal alguém sabe me falar se oq estou fazendo está correto ? poderia me dar sugestões??