Hibernate Composite-id

Oi pessoal,

Tou com um problema no mapeamento do Hibernate. Tenho duas tabelas Colaborador e Alerta, e uma tabela que faz a associação. Um colaborador pode ter N alertas e um alerta pode estar associado a N colaboradores. O que eu pretendo é obter todos os alertas para um colaborador. De seguida ponho o código para ficar mais fácil de visualizar:

Alerta.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="com.dominio">
	<class name="Alerta" table="ALERTA">
		<id name="id" type="long" column="ID">
	       <generator class="sequence">
				<param name="sequence">alerta_sequence</param>
			</generator>
	    </id>

		<many-to-one name="autor" class="com.dominio.Colaborador" lazy="proxy" not-null="true">
			<column name="ncautor" />
			<column name="vcautor" />
		</many-to-one>	    

		<property name="dataCriacao" column="DATACRIACAO" type="calendar" not-null="true"/>
	    <property name="assunto" column="ASSUNTO" type="string" length="80"/>
	    <property name="mensagem" column="MENSAGEM" type="string" length="2000"/>
	    
	    <set name="destinatarios" table="COLABORADORALERTA" lazy="false">
			<key>
				<column name="IDALERTA" />
			</key>
			<many-to-many class="Colaborador">
				<column name="NUMEROCOLABORADOR" />
				<column name="VERSAOCOLABORADOR" />
			</many-to-many>
		</set>	    	    
	</class>
</hibernate-mapping>

ColaboradorAlerta.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="com.dominio">
	<class name="ColaboradorAlerta" table="COLABORADORALERTA">
		
		<composite-id name="id" class="ColaboradorAlerta$Id">
			<key-property name="numeroColaborador" column="NUMEROCOLABORADOR" type="int" />
			<key-property name="versaoColaborador" column="VERSAOCOLABORADOR" type="int"/>
			<key-property name="idAlerta" column="IDALERTA" type="int"/>
		</composite-id>
		
		<many-to-one name="destinatario" class="com.dominio.Colaborador" lazy="proxy" not-null="true">
			<column name="numerocolaborador" />
			<column name="versaocolaborador" />
		</many-to-one>	    

		<set name="alerta" table="ALERTA" inverse="true">
			<key column="ID"/>
			<many-to-many column="ID" class="ALERTA"/>
		</set>
	    	    
	</class>
</hibernate-mapping>

O problema está no composite id que não corresponde ao da tabela Alerta. Mas naturalmente não corresponderia porque a sua chave é apenas o id do alerta.
Alguém me pode dar uma ajuda em como devo efectuar o mapeamento por favor. Se está incorrecto ter um Set para os Alertas qual a forma mais indicada de o fazer? O que eu quero no fundo é uma inversão do que é feito no Alerta.

Muito obrigado.