Começam as dúvidas…
rsrs**
Eu tenho uma classe definida assim:
class Classe {
int id;
Classe proximo;
}
Dai veio a dúvida…
Como ficaria essa relação one-to-one no hbm.xml?
Eu tentei algumas coisas bem padrão mas não tive mto sucesso.
Alguem tem alguma luz?
Eu utilizo hibernate com annotations, mas é só “transformar” no hbm.
Por exemplo, tenho uma classe Candidato e uma classe Curriculo, <one-to-one>.
Na classe Candidato
@OneToOne(mappedBy="candidato") // nome do atributo na classe Curriculo!
@Cascade(CascadeType.ALL)
private Curriculo curriculo;
Na classe Curriculo
@OneToOne
@JoinColumn(name="id_candidato") // nome da coluna FK
private Candidato candidato;
[]'s
Só um comentário: o @JoinColumn só é obrigatório se você quiser mudar o nome da coluna que o Hibernate atribui como padrão. No caso ilustrado pelo colega finotti, o @JoinColumn na classe Curriculo não é obrigatória, basta manter apenas o @OneToOne.
É.
Acho que não fui claro o bastante…
:S…
O problema é que é um relacionamento “recursivo”.
Logicamente é one-to-one.
class Classe {
int id;
Classe proximo;
}
Veem? É uma estrutura de fila.
Uma classe tem um código e a referência para o próximo ítem.
O ideal seria fazer isso :<one-to-one name="proximo" class="Classe" column="id_proximo"/>
Mas, o column não existe para o one-to-one.
Ou seja: F****
Alguem tem alguma alternativa [ sem ser transformar o relacionamento many-to-one]??
Se alguem souber… compartilhe comigo a solução…
Se não souber… o many-to-one resolve.
:S,
Ainda estou aprendendo sobre os benefícios e malefícios desse [lazy=“false” fetch=“join”]…
Pelo jeito ele não poderá existir…
hahaha
Mas, parece funcionar bem sem ele…
Ele faz multiplas consultas com load [uma para cada encadeamento apartir do segundo relacionamento] …
E não faz consultas com o query join [indiferente se é lazy ou não]…
Trem doido… rsrs**
Gente…
Ainda espero uma solution… pq, pra mim… isso foi uma gambiarra… hahaha