Ola, estou usando no mapeamento das minhas entidades, onde aparece os relacionamentos, o “fetch=FetchType.Lazy”…
Vamos supor q eu tenho 3 entidades, Aluno, Curso, Escola.
O relacionamento entao fica ± assim:
A entidade Aluno:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="curso_id", referencedColumnName="curso_id", insertable = false, updatable = false)
Curso curso;
public Curso getCurso() { return curso; }
E a entidade Curso:
@OneToMany(mappedBy="curso",fetch=FetchType.LAZY)
List<Aluno> alunos;
public List<Aluno> getAlunos() { return alunos; }
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="escola_id", referencedColumnName="escola_id", insertable = false, updatable = false)
Escola escola;
public Escola getEscola() { return escola; }
A entidade escola:
@OneToMany(mappedBy="escola",fetch=FetchType.LAZY)
List<Curso> cursos;
public List<Curso> getCursos() { return cursos; }
Configurei para aparecer o query que o JPA executa.
Ao pegar um curso, usando o entityManager.find(), ele executa uma query, nao executando a query para pegar todos seus alunos.
Ao usar a funcao getAlunos() deste curso, o JPA executa outro query q pega os alunos do curso e executa uma segunda query q pega a escola do curso! Eu declarei o fetch como lazy, n era pra ele pegar a escola do curso, apenas quando eu chamar o metodo getEscola()! Como faço entao? Eu nao queria q essa segunda query seja executada antes de eu chamar o metodo para pegar a escola 
O engraçado eh q todos os relacionamentos ManyToOne fazem isso, ignoram o fetch como lazy!
Alguem teve esse problema tbm?
Vlw!
