Boa tarde me deparei com o seguinte erro hj:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
pesquisando na Web vi que o erro está acontecento pq tenho um ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_grupo")
private Grupo grupo;
e quando tento recuperar os dados a session esta fechada, removi o session.close e o erro parou, mas agora surgiu a duvida onde eu posso fechar a session?
estava fazendo assim:
@ManagedBean
@ViewScoped
public class SubGrupoListaBean implements Serializable {
@PostConstruct
public void initIt() {
dao.getGenericDao().conect(); //abre a session
}
@PreDestroy
public void cleanUp() {
dao.getGenericDao().disconect(); //Fecha a session, se eu comentar essa linha não da mais erro porém a session fica aberta.
}
Alguns códigos foram suprimidos.
Obrigado Rodrigo.
Alguém mais teria outra ideia?
Já tentou implementar alguma das 4 soluções acima? Como foi?
boa tarde.
Tentei usar o filter ficou assim:
web.xml
<filter>
<filter-name>HibernateSessionFilter</filter-name>
<filter-class>br.bd.HibernateSessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HibernateSessionFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
o Filtro
package br.bd;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HibernateSessionFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc) throws IOException, ServletException {
HibernateUtil.openSession();
try {
HibernateUtil.currentSession().beginTransaction();
fc.doFilter(req, res);
HibernateUtil.currentSession().getTransaction().commit();
} catch (Exception e) {
HibernateUtil.currentSession().getTransaction().rollback();
throw new ServletException(e);
} finally {
HibernateUtil.closeCurrentSession();
}
}
@Override
public void init(FilterConfig c) {
}
@Override
public void destroy() {
}
}
está dando o seguinte erro:
Alguem pode me dar uma força?