Hibernate FetchMode

2 respostas
renandemelo

Pessoal,

Estou com a seguinte dúvida no hibernate

Tenho um conjunto de classes que está associada da seguinte forma. Uma instância de Apresentacao possui uma lista de instancias AssociacaoApresentacaoMusica, que por sua vez possui uma instancia de Musica, que por sua vez possui uma lista de estrofes.

Meu problema é o seguinte, preciso realizar uma consulta que me retorne todos esses objetos relacionados com uma determinada instancia de Apresentacao, estou criando uma Criteria e setando FetchModes para os relacionados

Criteria criteria = getSession().createCriteria(Apresentacao.class);
		
		criteria.add(Expression.eq("id", id));	
		criteria.setFetchMode("associacoesDeMusicas", FetchMode.JOIN);
		criteria.setFetchMode("associacoesDeMusicas.musica.estrofes",FetchMode.JOIN );

O que acontece que para o atributo “associacoesDeMusicas” o Fetch está funcionando e ele realmente está trazendo os objetos para mim, porém para as estrofes ele não está trazendo na criteria, imagino que seja pelo nível diferente.

Alguém sabe como me ajudar?

2 Respostas

T

Bom dia!

Renan,

Testa aí:

Criteria criteria = getSession().createCriteria(Apresentacao.class);   
           
        criteria.add(Expression.eq("id", id));       
        criteria.setFetchMode("associacoesDeMusicas", FetchMode.JOIN);
        criteria.setFetchMode("associacoesDeMusicas.musica",FetchMode.JOIN );      
        criteria.setFetchMode("associacoesDeMusicas.musica.estrofes",FetchMode.JOIN );

Eu acho que agora vai funcionar…

Um abraço,

Tubarão

renandemelo

Valeu cara,

Já tinha tentado isso antes, mas como deu um erro de “org.hibernate.HibernateException: cannot simultaneously fetch multiple bags” pensava que estava fazendo errado, então graças a sua ajuda resolvi pesquisar mais sobre esse erro e descobri um problema no hibernate neste caso. Segue o link caso esteja interessado…

http://blog.2paths.com/one-headache-too-many-hibernates-beef-with-multiple-bags.html

Flw,
Renan

Criado 1 de setembro de 2007
Ultima resposta 3 de set. de 2007
Respostas 2
Participantes 2