Mapeamento one-to-one com a mesma classe

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.

Olá, não seria melhor você especializar sua classe pessoa e criar a classe homem e a classe mulher e ai sim criar seu relacionamento?

Poste o mapeamento todo.