Fetch=FetchType.EAGER não funciona, alguém me ajuda?

Ola Pessoal!
Tenho as seguintes entidades:

@Entity
@Table(name = "FLEX_SEG_QUANDO")
public class Quando implements IGenericBean {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "ID")
    private int id;
    @Column(name = "SEGUNDA")
    private char segunda;
    @Column(name = "TERCA")
    private char terca;
    @Column(name = "QUARTA")
    private char quarta;
    @Column(name = "QUINTA")
    private char quinta;
    @Column(name = "SEXTA")
    private char sexta;
    @Column(name = "SABADO")
    private char sabado;
    @Column(name = "DOMINGO")
    private char domingo;
    @JoinColumn(name = "ID_GRUPO", referencedColumnName = "ID")
    @ManyToOne
    private Grupo idGrupo;

    @OneToMany(mappedBy="quandoHorarioComunicacaoId.idQuando", cascade={CascadeType.PERSIST, CascadeType.MERGE}, fetch=FetchType.EAGER) /////// não está trazendo a coleção!!!
    private Set<QuandoHorario> quandoHorarioSet;
    
    public Quando() {
    }

    public Quando(int id) {
        this.id = id;
    }

    public Quando(int id, char segunda, char terca, char quarta, char quinta, char sexta, char sabado, char domingo) {
        this.id = id;
        this.segunda = segunda;
        this.terca = terca;
        this.quarta = quarta;
        this.quinta = quinta;
        this.sexta = sexta;
        this.sabado = sabado;
        this.domingo = domingo;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public char getSegunda() {
        return segunda;
    }

    public void setSegunda(char segunda) {
        this.segunda = segunda;
    }

    public char getTerca() {
        return terca;
    }

    public void setTerca(char terca) {
        this.terca = terca;
    }

    public char getQuarta() {
        return quarta;
    }

    public void setQuarta(char quarta) {
        this.quarta = quarta;
    }

    public char getQuinta() {
        return quinta;
    }

    public void setQuinta(char quinta) {
        this.quinta = quinta;
    }

    public char getSexta() {
        return sexta;
    }

    public void setSexta(char sexta) {
        this.sexta = sexta;
    }

    public char getSabado() {
        return sabado;
    }

    public void setSabado(char sabado) {
        this.sabado = sabado;
    }

    public char getDomingo() {
        return domingo;
    }

    public void setDomingo(char domingo) {
        this.domingo = domingo;
    }

    public Grupo getIdGrupo() {
        return idGrupo;
    }

    public void setIdGrupo(Grupo idGrupo) {
        this.idGrupo = idGrupo;
    }

    public Set<QuandoHorario> getQuandoHorarioSet() {
		return quandoHorarioSet;
	}

	public void setQuandoHorarioSet(
			Set<QuandoHorario> quandoHorarioSet) {
		this.quandoHorarioSet = quandoHorarioSet;
	}

	@Override
    public String toString() {
        return "br.com.consist.solution.flexsi.bean.Quando[id=" + id + "]";
    }

	@Override
	public void setNullCollection() {     //////////////////////Esta função é uma solução para resolver problemas com Lazy
		this.setQuandoHorarioSet(null);
		this.getIdGrupo().setQuandoSet(null);
		this.getIdGrupo().setOqueSet(null);
		/*for (QuandoHorario quandoHorario  : this.getQuandoHorarioSet()) {
				quandoHorario.setNullCollection();
		}*/
	}
	
}
@Entity
@Table(name = "FLEX_SEG_QUANDO_HORARIO")
@NamedQueries(@NamedQuery(name = "QuandoHorario.findByGrupo", query = "SELECT q FROM QuandoHorario q WHERE quandoHorarioComunicacaoId.idQuando.idGrupo.id = :id ORDER BY horario_inicio"))
public class QuandoHorario implements IGenericBean {
    private static final long serialVersionUID = 1L;
    
    @Column(name = "HORARIO_FIM")
    private String horarioFim;

    @EmbeddedId
    private QuandoHorarioComunicacaoId quandoHorarioComunicacaoId;

    public QuandoHorario() {
    }
    
    public QuandoHorario(QuandoHorarioComunicacaoId quandoHorarioComunicacaoId) {
        this.quandoHorarioComunicacaoId = quandoHorarioComunicacaoId;
    }

    public QuandoHorario(String horarioInicio, String horarioFim) {
        this.horarioFim = horarioFim;
    }


    public String getHorarioFim() {
        return horarioFim;
    }

    public void setHorarioFim(String horarioFim) {
        this.horarioFim = horarioFim;
    }
    

    
    public QuandoHorarioComunicacaoId getQuandoHorarioComunicacaoId() {
		return quandoHorarioComunicacaoId;
	}

	public void setQuandoHorarioComunicacaoId(
			QuandoHorarioComunicacaoId quandoHorarioComunicacaoId) {
		this.quandoHorarioComunicacaoId = quandoHorarioComunicacaoId;
	}

    @Override
    public String toString() {
    	return "br.com.consist.solution.flexsi.bean.QuandoHorario[Horario_Inicio=" + horarioFim + "]";
    }

	@Override
	public void setNullCollection() { //////////////////////Esta função é uma solução para resolver problemas com Lazy
		this.getQuandoHorarioComunicacaoId().getIdQuando().getIdGrupo().setOqueSet(null);
		this.getQuandoHorarioComunicacaoId().getIdQuando().getIdGrupo().setQuandoSet(null);
		this.getQuandoHorarioComunicacaoId().getIdQuando().setQuandoHorarioSet(null);
	}
	
	@SuppressWarnings("serial")
	@Embeddable
    public static class QuandoHorarioComunicacaoId implements Serializable {

		@Column(name = "HORARIO_INICIO")
	    private String horarioInicio;
		
		@ManyToOne/*(fetch = FetchType.EAGER)*/
	    @JoinColumn(name = "ID_QUANDO", referencedColumnName = "ID")
	    private Quando idQuando;

		public QuandoHorarioComunicacaoId() {
			
		}
		
		public QuandoHorarioComunicacaoId(String horarioInicio, Quando idQuando) {
			super();
			this.horarioInicio = horarioInicio;
			this.idQuando = idQuando;
		}
		
	    public Quando getIdQuando() {
	        return idQuando;
	    }

	    public void setIdQuando(Quando idQuando) {
	        this.idQuando = idQuando;
	    }

        public QuandoHorarioComunicacaoId(String horarioInicio) {
            this.horarioInicio = horarioInicio;
        }

        public String getHorarioInicio() {
            return horarioInicio;
        }

        public void setHorarioInicio(String horarioInicio) {
            this.horarioInicio = horarioInicio;
        }

		@Override
		public int hashCode() {
			final int prime = 31;
			int result = 1;
			result = prime * result
					+ ((horarioInicio == null) ? 0 : horarioInicio.hashCode());
			result = prime * result
					+ ((idQuando == null) ? 0 : idQuando.hashCode());
			return result;
		}

		@Override
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			if (getClass() != obj.getClass())
				return false;
			QuandoHorarioComunicacaoId other = (QuandoHorarioComunicacaoId) obj;
			if (horarioInicio == null) {
				if (other.horarioInicio != null)
					return false;
			} else if (!horarioInicio.equals(other.horarioInicio))
				return false;
			if (idQuando == null) {
				if (other.idQuando != null)
					return false;
			} else if (!idQuando.equals(other.idQuando))
				return false;
			return true;
		}
		

    }

}

Estou fazendo uma busca do bean ‘QuandoHorario’, e nele preciso acessar a propriedade ‘Quando’ e apartir dela acessar a sua lista de QuandoHorario que é a ‘quandoHorarioSet’.
Alguém pode me dizer porque não está carregando a coleção ‘quandoHorarioSet’ quando efetuo a busca?

Desde já agradeço

coloca sua classe

QuandoHorarioComunicacaoId ai par eu poder ver…

opaa!
Ela esta aí alanbrasil1984, é uma classe interna da classe QuandoHorario, foi criada para resolver o uso de chave primária composta da classe QuandoHorario

sim compreendo mais como ele é resolvida que vc verifica se o EAGER irá funcionar entende…

Apenas faço uma busca simples ‘Select q From Quando q’ e jogo para uma coleção, porém em cada ‘Quando’ a coleção quandoHorarioSet não vem carregada

sim, mais para ele vir carregado vc tem que ter ele mapeada direitinho. pq senão o EJB não carrega…