Problema com associação entre 2 colunas 1 : n e fetch lazy

5 respostas
alandiniz

Bom eu tenho 2 classes:

class: LojaLookBook
-codigo
-nome
@OneToMany(mappedBy = “lojaLookBook”, fetch = FetchType.EAGER)
-List lojaLookBookImagens

class: LojaLookBookImagem
-codigo
-nome
@ManyToOne
@JoinColumn(name = “LOJA_LOOKBOOK”, referencedColumnName = “CODIGO”)
-lojaLookBook : LojaLookBook

meu relacionamento é bidirecional, ou seja, atravéz da imagem eu posso ver o lookbook dela… e através do lookbook eu posso ver a lista de imagens que ele tem.

Eu pesquisei mto antes de postar aqui, e eu tive vários erros diferentes… o atual dele é o seguinte:

Quando um lookbook tem 2 imagens, ele aparece duas vezes na listagem de lookbook

ele faz o seguinte (obs.: o hibernate gerou):
select bla bla bla
from
EXTRANET.LOJA_LOOKBOOK this_
left outer join
EXTRANET.LOJA_LOOKBOOKIMAGEM lojalookbo3_
on this_.codigo=lojalookbo3_.LOJA_LOOKBOOK

teve um outro jeito q eu fiz que a listagem de lojaLookBook veio normal, não repetiu nada… porém quando eu clicava em um deles pra ver suas imagens, dava erro de “fetch lazy”

qualquer coisa eu posto mais informações

5 Respostas

Hebert_Coelho

Isso aqui resolve o erro do lazy: Quatro soluções para LazyInitializationException. [=

alandiniz

intão esse problema do lazy está resolvido…

  • da forma que está hoje, ele está repetindo a capa quando se tem 2 itens
    ou seja
    se meu lojalookbook tem dois lojalookbookimagem ele traz duas vezes o lojalookbook…

no seu tutorial é como se uma pessoa tivesse 2 cachorros
pra cada cachorro ele traz a pessoa na lista novamente…

Hebert_Coelho

tenta utilizar o distinct na sua consulta.

Ou caso quem esteja repetindo seja o elemento da lista, utilize Set ao invés de List

alandiniz

essa consulta não sou eu que estou fazendo… é o hibernate de acordo com minhas anotações…

alandiniz

eu fiz um teste:
gerei a tabela no mysql
importei no netbeans e me deu o seguinte codigo:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "lojaLookBook", fetch = FetchType.EAGER)
private Collection<LojaLookBookImagem> lookbookimagemCollection;


@JoinColumn(name = "lojaLookBook", referencedColumnName = "codigo")
@ManyToOne
private LojaLookBook lojaLookBook;

coloquei no meu projeto no eclipse, e continua cm o mesmo problema…

pra cada “filho” da classe “Pai” ele gera um registro novo… por exemplo,
um lookbook tem 2 imagens
na lista de lookbooks ele aparece duas vezes o mesmo lookbook, um para cada imagem…

Criado 16 de maio de 2012
Ultima resposta 17 de mai. de 2012
Respostas 5
Participantes 2