Dúvida no mapeamento Hibernate

Pessoal,

 Estou desenvolvendo uma aplicação que tem as classes Patrocinador, Cliente e Contato. Um patrocinador pode ter zero ou mais clientes e zero ou mais contatos, e um cliente pode ter zero ou mais contatos. Assim sendo, coloquei um Set de contatos de Patrocinador e de Cliente, e criei a seguinte estrutura de Banco de Dados:
create table patrocinadores(
	id bigint generated by default as identity(start with 1) not null,
	nome varchar(100) not null,
	...
	constraint uk_nome_abreviado_patrocinadores unique (nome_abreviado),
	constraint uk_cnpj_patrocinadores unique (cnpj),
	constraint uk_conta_patrocinadores unique (conta))

create table clientes(
	id bigint generated by default as identity(start with 1) not null,
	nome varchar(100) not null,
	...
	constraint fk_id_patrocinador_clientes foreign key (id_patrocinador) references patrocinadores (id)
		on delete cascade)

create table contatos(
	id bigint generated by default as identity(start with 1) not null,
	nome varchar(100) not null,
	...
	constraint uk_email_contatos unique (email))
	
create table contatos_patrocinadores(
	id bigint generated by default as identity(start with 1) not null,
	id_contato bigint not null,
	id_patrocinador bigint not null,
	constraint pk_contatos_patrocinadores primary key (id),
	constraint fk_id_contato_contatos_patrocinadores foreign key (id_contato) references contatos (id)
		on delete cascade,
	constraint fk_id_patrocinador_contatos_patrocinadores foreign key (id_patrocinador) references patrocinadores (id)
		on delete cascade,
	constraint uk_id_contato_id_patrocinador_contatos_patrocinadores unique (id_contato, id_patrocinador))

create table contatos_clientes(
	id bigint generated by default as identity(start with 1) not null,
	id_contato bigint not null,
	id_cliente bigint not null,
	constraint pk_contatos_clientes primary key (id),
	constraint fk_id_contato_contatos_clientes foreign key (id_contato) references contatos (id)
		on delete cascade,
	constraint fk_id_cliente_contatos_clientes foreign key (id_cliente) references clientes (id)
		on delete cascade,
	constraint uk_id_contato_id_cliente_contatos_clientes unique (id_contato, id_cliente))
 Agora, a dúvida é a seguinte: como mapear isto em patrocinador.hbm.xml e cliente.hbm.xml? Alguém tem alguma dica?

aí deve ficar ± assim…

[quote]

   <id name="id">
   <generator class="increment"/>
   </id>  


   <property name="nome"/>

   <set name="contatos" cascade="all">
       <key>
	<column name="contato"/>
	<column name="patrocinador"/>
   </key>
    
   <many-to-many class="ContatosPatrocinador"/>
   </set>
[/quote]

[quote]

<class name="Clientes">


    <id name="id">
	<generator class="increment"/>
    </id>

    <property name="nome"/>

</class>
[/quote]

Cara,

 Vou tentar fazer desta forma. Obrigado pela ajuda! :)