JPA - MultipleBagFetchException - Por que ocorre? [RESOLVIDO]

Olá pessoal.

Eu dei uma pesquisada aqui no fórum e não consegui encontrar uma resposta pra minha dúvida. Vamos à explicação.

Quando utilizo JPA (Hibernate como provider) ao tentar fazer um JOIN FETCH em 2 listas (porque preciso que as 2 sejam carregadas naquele momento, e preciso que sejam Listas, para mantê-las indexadas e também poder ordená-las como eu quiser) o Hibernate lança uma exceção chamada MultipleBagFetchException.

Acontece que o JPA não suporta carregar 2 listas simultaneamente em 1 JPQL.

Existem vários “workarounds” para isso, mas esse não é o objetivo do tópico.

Eu gostaria de saber se alguém saberia explicar o motivo dessa exceção. O que torna inviável carregar 2 listas dessa forma?

Alguém tem uma explicação boa, ou algum material que eu possa ler pra me explicar o motivo disso?

Obrigado!

Talvez esse post nos foruns do hibernate te ajude: https://forum.hibernate.org/viewtopic.php?t=959478

Eu imagino que o motivo é a resposta de um usuário chamado Max :[quote]It did not work in previous versions - it resulted in bags that could contain redundant elements because of the cartesian product. [/quote]

Opa, value jakefrog

Nesse post que você mostrou tinha um link muito interessante que explicou exatamente o que eu queria saber.

Está tudo relacionado ao produto cartesiano gerado pelos 2 joins, e o fato de um List aceitar valores duplicados, enquanto um Set não aceita. Agora entendi o que queria.

Obrigado!