Relacionamento @OneToMany unilateral sem tabela de relacionamento

Bom dia todos,

Estou com um problema no mapeamento usando Anotação:

Ao usar

    @OneToMany(cascade=CascadeType.ALL)
    private List<Filho> filhos= new ArrayList<filhos>();

e não fazer o mapeamento inverso na outra entidade, a JPA gera para mim uma tabela intermediaria entre pai e filho.

Como seria o mapeamento unilateral para não gerer tabela intermediaria , e sim o id do pai na tabela do filho?

É uma boa prática… sempre que tiver um @OneToMany… ter do outro lado o @ManyToOne

Dá muito problema se nao usar assim…

1 curtida

[quote=rogelgarcia]É uma boa prática… sempre que tiver um @OneToMany… ter do outro lado o @ManyToOne

Dá muito problema se nao usar assim…
[/quote]

Concordo com o Rogel, este tipo de relacionamento é um pouco confuso, pois os mapeamentos de um @OneToMany unidirecional ficam
do lado oposto da chave estrangeira… É mais claro e tranquilo utilizar o @OneToMany multidirecional com um mapped by para sua
entidade que tiver @ManyToTone , tente dessa forma…

1 curtida

Use @JoinColumn junto

[quote]É uma boa prática… sempre que tiver um @OneToMany… ter do outro lado o @ManyToOne

Dá muito problema se nao usar assim… [/quote]

como assim dá muito problema??

não existe mapeamento Unidirecional???

Exirtir até existe… os problemas eu nem sei quais sao… pq nao faço assim justamente pra evitar os problemas…

Tá inclusive na documentação do Hibernate…

Mas se voce chegar a usar o unidirecional… seria interessante vc postar aqui… caso de algum problema pra gente ficar sabendo…

se vc naum sabe quais os problemas, pq evita?? pq todo mundo diz que tem??

não tenho experiencia com Hibernate, mas pra saber um pouco de relacionamento não necessita conhecer Hibernate e sim relacionamentos.

o fato é: existe relacionamento Unidirecional e em muitas ocasiões ele é necessário, ou melhor em algumas situações o bidirecional é desnecessário, fazendo-o Unidirecional. tem uma matéria da Caelum que fala sobre isso aqui:
http://blog.caelum.com.br/2007/03/28/como-nao-aprender-orientacao-a-objetos-relacionamento-bidirecional/

mas como exemplo poderiamos citar uma Classe Aluno que tem seus atributos, e digamos que um Aluno tem um Status que é um objeto tbm… então

Aluno tem 1 Status
Status tem N Alunos

mas, se me interessa apenas saber o Status do Aluno. isso é um relacionamento Unidirecional certo?

como o Hibernate trata isso? ou como é que deveria ser feito??

[size=9]Aécio Costa
Desenvolvedor Delphi e Java
Twitter: http://twitter.com/aeciovc[/size]

1 curtida

sim… uma coisa que fala-se bastante é sobre a consistência dos Objetos quando se tem relacionamentos desse tipo, algumas vezes usando Hibernate percebi que ele não estavam totalmente consistentes por isso a dúvida tbm!

[size=9]Aécio Costa
Desenvolvedor Delphi e Java
Twitter: http://twitter.com/aeciovc[/size]

Nao… na verdade… o hibernate dá muitos problemas… e inclusive na forma como eu trabalho… gosto de ter o dominio das coisas

Mesmo o relacionamento sendo unilateral… o FK estará na classe com @ManyToOne… se vc nao tem esse campo na classe… vc já perde determinado poder sobre o que está acontecendo e passa a depender mais do hibernate…

Na documentacao do hibernate isso é recomendado também…

Usar relacionamento unilateral vc só consegue ganhar uma coisa: problemas…

Entao… eu procuro evitar… pra nao ter dor de cabeça…

Mas afinal pra que simplificar se dá pra complicar? (Eu num curto muito essa filosofia)

entendi o que vc quiz dizer… mas acho mais complicado fazer algo sem saber o pq. afinal o Hibernate veio nos ajudar (eu acho! rsrs).

alguém com experiência pra poder citar problemas de relacionamentos não bidirecionais??

[size=9]Aécio Costa
Desenvolvedor Delphi e Java
Twitter: http://twitter.com/aeciovc[/size]

Voce chegou a tentar a solucao do thiago?

Só utilizar @JoinColumn(name=“nomedacoluna”, referencedColumnName=“nomeDaColunaNaTabelaReferenciada”)