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?