Problemas com Hibernate: cannot simultaneously fetch multiple bags

Olha só pessoal… estou enfrentando problemas no hibernate. Por favor leiam atentamente pois o problema é bem espeífico.
Tenho três classes: Phase (A), Iteration (B) e Activity ©

tenho 4 tabelas: tabelas de phase, iteration e activity + a tabela iterationactivity (relacionamento ManyToMany)
vejam como está organizada:

A -> @OneToMany com B que por sua vez eh @ManyToOne com A

e B é @ManyToMany com C

daí faço as seguintes relações:

A -> B -> C (A se relaciona com B q se relaciona com C)

Não se preocupem com os nomes das tabelas e atributos descritas na classe…

Ai na tabela ou ele apaga a ligação de A e B ou ele apaga a ligação de B com C
depende da ligação que eu fizer primeiro
ai ja descobri o erro…

como a ligação @ManyToMany entre B e C esta definida como @ManyToMany(fetch = FetchType.LAZY) , qndo ele vai salvar a ligação de A com B (vamos supor que ele ja salvou no banco a ligação de B com C) ele não tem carregado a lista de objetos do tipo C da classe B, ou seja, a lista de objetos C está nula. Como consequencia, o hibernate faz a associacao de A -> B e apaga a associacao B -> C, pois teoricamente B nao possui elementos na lista de objetos C. Pelo que eu li, teria que mudar o FetchType de LAZY para EAGER… pois isso permite que ele carregue a lista inteira de B (quando for feita a associação com A) daí ficaria A -> B -> C

mas ai ele dá um erro:

Error connect to the database
org.hibernate.HibernateException: cannot simultaneously fetch multiple bags

Segue abaixo as classes (A corresponde a Phase, B corresponde a Iteration e C corresponde a Activity no exemplo)

@Entity
@Table(name = "pe_phase", schema = "transforms")
public class Phase extends EntityModel {

    @Id
    @Column(name = "int_id_PE_Phase")
    private long id;

    @Column(name = "vchr_description")
    private String description;

    @Column(name = "int_temporalOrder")
    private int order;

    @Column(name = "vchr_type")
    private String type;

    @OneToMany(mappedBy = "phase", fetch = FetchType.EAGER)
    private List<Iteration> iteration;
@Entity
@Table(name = "pe_iteration", schema = "transforms")
public class Iteration extends EntityModel {
    @Id
    @Column(name = "int_id_PE_Iteration")
    private long id;

    @Column(name = "int_number")
    private int number;

    @ManyToOne
    @JoinColumn(name = "PE_Phase_int_id_PE_Phase")
    @Fetch(FetchMode.JOIN)
    private Phase phase;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "pe_iterationactivity", schema = "transforms", joinColumns = @JoinColumn(name = "PE_Iteration_int_id_PE_Iteration"), inverseJoinColumns = @JoinColumn(name = "PE_Activity_int_id_PE_Activity"))
    private List<Activity> activities;
@Entity
@Table(name = "pe_activity", schema = "transforms")
public class Activity extends EntityModel {

    @Id
    @Column(name = "int_id_PE_Activity")
    private long id;

    @Column(name = "vchr_activity")
    private String description;

    @ManyToOne
    @JoinColumn(name = "PE_ProcessRole_int_id_PE_ProcessRole")
    @Fetch(FetchMode.JOIN)
    //@Cascade(CascadeType.SAVE_UPDATE)
    private ProcessRole processRole;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "pe_iterationactivity", schema = "transforms", joinColumns = @JoinColumn(name = "PE_Activity_int_id_PE_Activity"), inverseJoinColumns = @JoinColumn(name = "PE_Iteration_int_id_PE_Iteration"))
    private List<Iteration> iterations;

Espero que possam me ajudar, desde já agradeço

Alabê Duarte

Não sei se vc ainda esta com problemas.

Mas tente alterar a definição do seu relacionamento de EAGER para lazy

ex:

caso não de certo, tente remover o o atributo “fetch=FetchType.” (acredito que se você deixar sem ele, o atributo vá assumir um valor defaut)

Tem um artigo interessante no link abaixo:
http://www.patternizando.com.br/2011/02/org-hibernate-hibernateexception-cannot-simultaneously-fetch-multiple-bags/