Hibernate - failed to lazily initialize

Erro:

org.apache.jasper.JasperException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.jmedic.beans.Medico.especialidades, no session or session was closed
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Estou com o seguinte relacionamento ManyToMany(n-n)

// Classe Especialidade
@ManyToMany(mappedBy="especialidades")
	public Collection<Medico> getMedicos() {
		return medicos;
	}
// Classe Medico
@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name="ESP_MED",
			joinColumns=@JoinColumn(name="id_medico"),
			inverseJoinColumns=@JoinColumn(name="id_especialidade")
	)
	public Collection<Especialidade> getEspecialidades() {
		return especialidades;
	}
public class HibernateUtil {

	private static SessionFactory sessionFactory;

	static {
		Configuration conf = new AnnotationConfiguration();
		conf.configure();
		sessionFactory = conf.buildSessionFactory();
	}

	@SuppressWarnings("deprecation")
	public static Session getSession() {

		Session session = sessionFactory.openSession();

		try {
			session.connection().setAutoCommit(false);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return session;
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}

}

Quando executo o método findById ocorre o erro citado acima, o método é o seguinte:

public Object findById(Class<?> clazz, int key){
		Session session = null;
		try {
			session = getSession();
			Object objeto = session.get(clazz, key);
			
			return objeto;
		} finally {
			if (session != null) {
				session.close();
			}
		}
	}

protected Session getSession() {
		return HibernateUtil.getSession();
	}

Gostaria que alguem me ajudasse, já estou a 3 dias fazendo varias mudanças e não consigo obter um resultado satisfatório.
Se não fechar a conexão no método, da certo, porém tenho certeza que não é a solução.

Grato.

http://fabiozoroastro.wordpress.com/2009/10/13/enfrentando-a-lazyinitializationexception-no-hibernate/

Ficaria muito doloroso trocar @ManyToMany(fetch = FetchType.LAZY) por @ManyToMany(fetch = FetchType.EAGER) ?

Amigo vc está trabalhando na web? Se estiver vc pode utilizar um filtro já próprio do hibernate que abre uma transaçào para que o método possa realizar a consulta no banco… normalmente é essa é a pane…
Quanto ao eger, se vc trocar pode gerar uma perda básica no desempenho, porém não vai ter esse problema no futuro, pois ele já carrega toda a dependência quando carrega o objeto principal…