FetchType: EAGER - Hibernate

7 respostas
rafaelgaldino

O cenário é o seguinte, tenho um Bean no qual tem duas collections e preciso passar “fetch=FetchType.EAGER” para as duas collections. O Hibernate não suporta dois FetchType.EAGER, que outra solução poderia fazer, já que preciso carregar a coleção dessas duas propriedades em uma mesma página. Valeu…

7 Respostas

nbluis

Não suporta?

rafaelgaldino

Posso ter me expressado errado, mais todas as vezes que eu coloco fetchtype.EAGER em duas coleções do mesmo bean, dá um erro…

@OneToMany(cascade = CascadeType.ALL, mappedBy = "segmentoMercado", fetch=FetchType.EAGER)
private Collection<SegmentoMercadoCnae> cnaeCollection;
    
@OneToMany(cascade = CascadeType.ALL, mappedBy = "segmentoMercado", fetch=FetchType.EAGER))
private Collection<SegmentoMercadoNivelRestricao> nivelRestricaoCollection;

Se eu tiver enganado, que me corrijam por favor…

nbluis

A principio isso “deveria” funcionar, mas pode ter erro mesmo.

Qual o erro ocorre ?

rafaelgaldino

17:14:31,943 ERROR [[/FacZ]] Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener javax.persistence.PersistenceException: org.hibernate.HibernateException: cannot simultaneously fetch multiple bags 17:14:32,819 ERROR [StandardContext] Error listenerStart 17:14:32,819 ERROR [StandardContext] Context [/FacZ] startup failed due to previous errors 17:14:32,819 INFO [[/FacZ]] Shutting down Log4J

Alguém já passou por isso?

Leozin

eu já, mas é meio engraçado, porque comigo isso começou a acontecer quando eu tinha umas 3 propriedades com eager

a solução que proponho é utilizar SET em vez de LIST que funciona :slight_smile:

abraço

Ps.: ou utilizar lazy loading

rafaelgaldino

Leozin,

Por Default já não é Lazy loading?

E no caso de usar JSF e DATATABLE, como posso usar o SET? Ela não funciona com a dataTable…

Mr.style

Estou com o mesmo erro
o que poderia ser isto???

Criado 21 de janeiro de 2008
Ultima resposta 21 de jun. de 2011
Respostas 7
Participantes 4