Duvidas ao realizar pesquisa com EAGER ou LAZY [RESOLVIDO]

A classe produtos tem um list de Itens conforme abaixo. Ao realizar a pesquisa o objeto itens não é carregado, porque eu fecho a conexão. somente é carregado quando utilizo o “fetch = FetchType.EAGER”.

** Caso eu não feche a conexao ele busca normalmente.

** Alguem consegue me dizer se existe uma solução para eu continuar a fechar a conexao e preencher os dados quando necessário?

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(joinColumns = { @JoinColumn(name = “id_produto”) }, inverseJoinColumns = {
@JoinColumn(name = “id_item”) })
private List itens;

public Produto ObterPorID(Integer id) throws Exception {

	EntityManager em = new JPAUtil(this.base).getEntityManager();

	Query query = em.createQuery("FROM Produto where id=:id");
	query.setParameter("id", id);

	if (!query.getResultList().isEmpty()) {
		
		Produto produto = (Produto) query.getSingleResult();
		
		em.close();
		
		return produto;

	} else {
		
		em.close();
		
		return null;

	}
}

Bloco de Citação

Deixa como lazy e usa fetch join de acordo com a necessidade da query.

from Produto as p
left join fetch p.itens

Muito obrigado pela sua ajuda, funcionou perfeitamente.

Só que agora entrei em outro problema, fiz a SQL desse modo:
select DISTINCT p from Produto p left join fetch p.itens left join p.itensObrigatorios where p.id=:id

Tenho duas lista na classe produtos e preciso que essas duas sejam carregadas.

Quando eu uso o DISTINCT o primeiro list “Itens” vem carregado e o segundo só apresenta os registros se eu debugar e depois clica em cima da lista itensObrigatorios para exibir. Somente assim carrega o list itensObrigatorios.

Quando eu tiro o DISTINCT os dois list é carregados com a quantidade de registro na tabela itens e itensObrigatórios tudo repetido. Onde o correto era só apresentar os itens correlacionados no produto.

Alguém sabe me dizer o que estou fazendo de errado?