Hibernate com Composite-id

Pessoal, estou com uma grande dúvida já pesquisei e até agora não resolver, é o seguinte.

Tenho um tabela chamada Cliente -> clienteId Pk
Segunda tabela chamada CadastroPessoa -> clienteId FK PK e cpf PK - então aqui criei um composite-id para fazer o relacionamento, até aí tudo bem :slight_smile:

Agora tenho que relacionar um terceira tabela chamada CadastroFontePagadoraFormal com a tabela pessoa, ficando clienteId FK PK, CPF FK PK e CPFCNPJFontePagadora PK

Então como eu faço pra mapear no hibernate a tabela pessoa sendo que ela já tem um chave composta, criei um composite-id porém no mapeamento tenho que informar a coluna referente a Pessoa, porém são duas colunas, o que fazer??

Trecho do meu Cliente.hbm.xml

<id column="CodigoCliente" name="codigoCliente" type="long">

CadastroPessoa.hbm.xml

<composite-id name="cadastroPessoaID"> <key-many-to-one name="cliente" column="codigoCliente" class="Cliente"></key-many-to-one> <key-property name="cpf"></key-property> </composite-id>

E o último que estou quebrando a cuca CadastroFontePagadoraFormal.hbm.xml

<composite-id name="fontePagadoraFormalID"> <key-property name="CNPJ_CPF_Fonte_Pagadora" type="string"></key-property> <key-many-to-one name="cadastroPessoa" class="CadastroPessoa" column=""></key-many-to-one> <key-many-to-one name="tipoFontePagadora" class="CadastroTipoFontePagadora" column="cod_Tipo_Fonte_Pagadora"></key-many-to-one> <key-many-to-one name="tipoPessoa" class="CadastroTipoPessoa" column="cod_Tipo_Pessoa_Fonte_Pagadora"></key-many-to-one> </composite-id>

Como podem ver preciso relacionar com o CadastroPessoa, porém por ser chave composta como fazer para criar o relacionamento ali,

se alguém já passou por isso e puder ajudar agradeço desde já,

abraço,

Evandro

cara…tenta simplificar seu modelo de banco…se for possivel…CPF eh um numero unico, correto? então, soh com o CPF vc ja garante a consistencia dos dados na sua tabela Pessoa…deixa a chave clienteID simplesmente como FK, fora da PK…o mesmo acontece com a tabela CadastroFontePagadoraFormal…

espero ter ajudado…

flw

Valeu Pedro pela resposta, o problema é que não posso fazer isto pois tenho vários clientes, e dentro de cada cliente a Pessoa (CPF) pode ter FontesPagadoras diferentes por exemplo não que este seja o caso mais específico, mas tipo uma Pessoa(CPF) de um determinado cliente, não pode saber que existe esta mesma pessoa cadastrada em outro cliente, então os dados da pessoa são do cliente, e não para todos os clientes, entendeu o problema?? hehe

Bom mas eu acabei optando aqui por fazer o relacionamento o a tabela cliente e coloquei o CPF apenas como propriedade no relacionamento, não é a forma mais correta mas vai funcionar, porém fiquei curioso em saber se existe alguma maneira de fazer este relacionamento em hibernate.

obrigado pela ajuda,

abraço,

Evandro