Pessoal,
Preciso criar uma mapeamento bidirecional e one-to-one entre entre objetos de uma mesma classe mas não estou conseguindo.
Imagine uma classe “Pessoa” que tenha uma propriedade “conjuge” também do tipo pessoa.
Gostaria de poder fazer:
Pessoa homem = new Pessoa();
Pessoa mulher = new Pessoa();
homem.setConjuge(mulher);
homem.getConjuge().setConjuge(homem);
E depois de executar o código acima gostaria de ter duas linhas na minha tabela “Pessoas” onde na linha 1, no campo “conjuge_id” tenha o id da linha 2.
E na linha 2, no campo conjuge_id tenha o id da linha 1.
O meu código está como acima, funciona, mas não grava os “conjuge_id”. O que pode estar errado?
O meu mapeamento do relacionamento, após vários testes, está assim:
<one-to-one name="conjuge"/>
Mas eu também já tentei usar:
<one-to-one name="conjuge" class="package.Pessoa"/>
E também
<one-to-one name="conjuge" class="package.Pessoa" constrained="true"/>
E também
<one-to-one name="conjuge" class="package.Pessoa" property-ref="id"/>
Embora eu não tenha entendido muito bem para que serve o property-ref.
Eu tentei olhar na net, mas só achei exemplos de one-to-one entre classes diferentes, tipo pessoa-funcionario.
Vi também um caso onde um cara fez um one-to-many usando unique=“true”, mas ainda não pude testar. Embora também seja bem estranho.
Bom, é isso. Valeu.
Abraço.