Problema Hibernate - Solucionado!
Bom dia,
Tenho um objeto (Funcionario) que possui vários atributos, entre eles um outro objeto (Cargo).
Na minha jsp, tenho uma lista de objetos do tipo Funcionario, e o meu problema é na hora de acessar o atributo "descricao" do objeto-atributo Cargo.
Coloquei da seguinte maneira:
Quando a jsp é chamada , recebo a seguinte mensagem de erro:
Alguém tem alguma sugestão???
<%int cont=1;%>
<c:forEach var="funcionario" items="$">
<tr>
<td>${funcionario.matricula}</td>
<td>${funcionario.nome}</td>
<td>${funcionario.cargo.descricao}</td>
</tr>
<%cont++;%>
</c:forEach>
javax.el.ELException: Error reading 'descricao' on type model.dto.Cargo$$EnhancerByCGLIB$$8838f8e8 javax.el.BeanELResolver.getValue(BeanELResolver.java:66) javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) org.apache.el.parser.AstValue.getValue(AstValue.java:97) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923) org.apache.jsp.adm.listaFuncionario_jsp._jspService(listaFuncionario_jsp.java:199) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085) org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) root cause org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:60) org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111) org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:140) model.dto.Cargo$$EnhancerByCGLIB$$8838f8e8.getDescricao(<generated>) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) javax.el.BeanELResolver.getValue(BeanELResolver.java:62) javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) org.apache.el.parser.AstValue.getValue(AstValue.java:97) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923) org.apache.jsp.adm.listaFuncionario_jsp._jspService(listaFuncionario_jsp.java:199) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085) org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Giovane Nunis
Curtidas 0
Respostas
Marcelo Guimarães
09/04/2009
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
Você deve estar usando lazy no cargo e fechou a sessão, assim não tem como você recuperar os dados. O erro aconteceu porque o objeto cargo não foi inicializado para que a descrição possa ser retornada.
GOSTEI 0
Giovane Nunis
09/04/2009
[quote="Ataxexe"]
Verifiquei que o problema é qndo eu fecho a sessão.
Veja um exemplo q eu utilizo para fechá-la:
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
Você deve estar usando lazy no cargo e fechou a sessão, assim não tem como você recuperar os dados. O erro aconteceu porque o objeto cargo não foi inicializado para que a descrição possa ser retornada.
//Buscar todos os funcionarios
public List findAll() throws Exception {
log.debug("finding all Funcionario instances");
try {
String queryString = "from Funcionario";
Query queryObject = getSession().createQuery(queryString);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw new Exception("Código Erro: FuncionarioDAO -06\n");
}finally{
getSession().close();
}
}
GOSTEI 0
Anderson Wagner
09/04/2009
descomente a linha, é ali mesmo que você tem que fechar a conexão.
faça um loop na lista fazendo um
assim você carrega os dados necessários antes de fechar a conexão
Hibernate.initialize(funcionario.getCargo());
GOSTEI 0
Giovane Nunis
09/04/2009
[quote="anderson.wagner"]descomente a linha, é ali mesmo que você tem que fechar a conexão.
faça um loop na lista fazendo um
assim você carrega os dados necessários antes de fechar a conexão
Linha descomentada e loop implementado.
[b]Problema solucionado![/b]
Anderson, muito obrigada pela dica!
Hibernate.initialize(funcionario.getCargo());
GOSTEI 0