Bom dia,
Estou com um problema para fazer um onetoone no hibernate, tenho duas tabelas que se relacionam por colunas que não são chaves primarias, ae eu uso a anotação @joincolumn pra informar qual coluna eu quero q seja utilizada na relação, porem isso funciona só para uma das entitys, a outra continua usando o id, por exemplo, tenho duas tabelas “pessoa” e “dadosPessoa” e cada tabela dessa tem 4 campos (Pessoa: id, nome, idade, cpf) (dadosPessoa: id, rg, cpf, descricao), o q eu quero fazer é q ao invés das tabelas se ralcionarem pelos ids, quero q elas se ralacionem pelo cpf, o maximo q consegui fazer foi relacionar id de uma com cpf da outra, mas nunca o cpf das duas, segue abaixo o codigo:
Pessoa:
@OneToOne(fetch = FetchType.LAZY, optional=true)
@JoinColumn(name="cpf")
private Pessoa pessoa;
dadosPessoa:
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pessoa")
private DadosPessoa dadosPessoa;
sql gerado:
select
this_.id as id0_1_,
this_.nome as nome0_1_,
this_.idade as idade0_1_,
this_.cpf as cpf0_1_,
b1_.id as id1_0_,
b1_.rg as rg1_0_,
b1_.cpf as cpf1_0_,
b1_.descricao as descicao1_0_
from
pessoa this_
inner join
dadosPessoa b1_
on this_.id=b1_.cpf
Aqui segue o sql da forma q eu quero que ele fique e nao estou conseguindo (em negrito):
select
this_.id as id0_1_,
this_.nome as nome0_1_,
this_.idade as idade0_1_,
this_.cpf as cpf0_1_,
b1_.id as id1_0_,
b1_.rg as rg1_0_,
b1_.cpf as cpf1_0_,
b1_.descricao as descicao1_0_
from
pessoa this_
inner join
dadosPessoa b1_
[b]on this_.cpf=b1_.cpf[/b]