Cara, num sei bem se entendi o problema não mas vamos lá…
No seu sistema vc tem a possibilidade de cadastrar uma pessoa, sem vinculo com PJ ou PF?! Pra que?!
Caso nao precise, pq vc nao muda um pouco a arquitetura dessas tabelas?
Com o hibernate vc pode colocar tipagem de objetos que ele entende qual objeto vc esta sendo persistido, através de herança. Dai vc precisaria apenas de uma tabela no banco
No caso eu faria uma herança ai, onde PF e PJ herdariam de PESSOA.
A tabela chamaria PESSOA mesmo mas com um campo chamado TIPO (que definiria se PJ ou PF).
Dai no mapeamento deve haver algumas modificações.
Primeiramente acrescentar um discriminator ao mapeamento do objeto PESSOA (que é o que será persistido) para o campo TIPO (que é o que diferenciará os subtipos PF e PJ).
<discriminator
column="TIPO"
type="string"
/>
Feito isso, agora vc deve definir os subtipos de pessoas que existem, no mapeamento do objeto PESSOA tbm.
<subclass
name="PF"
discriminator-value="F"
/>
<subclass
name="PJ"
discriminator-value="J"
/>
Onde PF e PJ são objetos da aplicação herdados de PESSOA.
Dai acabou, é só salvar os PF e os PJ que o discriminator da conta do recado. Como estao definidos os subtipos, ele sabe qual TIPO cada classe é, devido a herança. Logo o campo TIPO seria setado de acordo com o objeto persistido (F para PF ou J para PJ). É bom lembrar que esse atributo TIPO nao deve ser manipulado pois pode gerar erros. Eu setaria ele no construtor de cada objeto, setando ‘F’ no construtor de PF e ‘J’ para PJ. Feito isso acabou. Use como se fosse uma pessoa mesmo.
Na busca funciona da mesma forma mas no inverso. Atraves do discriminator, o hibernate molda os objetos atraves do campo TIPO. Dai se estiver com valor F, virá um objeto PF, caso J virá um objeto PJ.
Lembrando que ambos são pessoas devido a herança.
Pro seu problema do ID ai, pelos teste que eu já realizei, só de vc comitar a transação, o hibernate já seta o ID do objeto. Dai vc nao precisa preocupar, a nao ser que gere alguma exception, claro.
Acho q ajudei.
Caso nao, fica ai uma solução.
Vlw
Zé