Erro ao preencher grid no JSP

Bom dia!

Estou tentando carregar um grid na minha jsp com os dados de uma List,
só que está dando essa Exception e eu não encontrei o erro.
Bom o que o Tomcat mostra pra mim é isso:

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: javax.servlet.jsp.el.ELException: An object of type "java.util.ArrayList" threw an exception in its toString() method while trying to be coerced to a String
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	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.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	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.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)



root cause 

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.lilly.workflow.beans.Usuario.aplicacao, no session or session was closed
	org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
	org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
	org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
	org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
	org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:246)
	com.lilly.workflow.beans.Usuario.getAplicacaoTexto(Usuario.java:187)
	com.lilly.workflow.beans.Usuario.toString(Usuario.java:205)
	java.lang.String.valueOf(String.java:2577)
	java.util.AbstractCollection.toString(AbstractCollection.java:454)
	org.apache.commons.el.Coercions.coerceToString(Coercions.java:389)
	org.apache.commons.el.Coercions.coerce(Coercions.java:329)
	org.apache.commons.el.ExpressionEvaluatorImpl.convertToExpectedType(ExpressionEvaluatorImpl.java:345)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:267)
	org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
	org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:932)
	org.apache.jsp.templates.input.usuario.grid_005fusuario_jsp._jspService(grid_005fusuario_jsp.java:70)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
	org.apache.jsp.templates.input.usuario.lista_005fusuario_jsp._jspService(lista_005fusuario_jsp.java:79)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	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.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	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.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Obrigado!

Tah usando o filtro de open session in view?

Leonardo,

Quando você tem no Hibernate um relacionamento entre tabelas e você assume que esse relacionamento vai originar uma Coleção (geralmente relacionamento de 1-N), você deve indicar que o carregamento dessas informações deve ser imediato e não de forma preguiçosa.

Ou seja, você deveria indicar no seu mapeamento o lazy-load como false para que o carregamento dessas informações solicitadas preencham a sua Coleção num primeiro instante, no momento em que você está buscando os dados do banco. E não sob demanda, que é o que deve estar acontecendo.

Tenta ajustar o seu lazy-load e teste novamente. Se o erro persistir, posta o erro aqui.
Abraço.

Duardor,

Como assim filtro de open session in view?
Não entendi não. Explica melhor.

Estou questionando pois nunca ouvi falar nisso. Pode até ser que tenha escutado, porém com outras palavras.
Abraço!

Bland,

então, desculpa a pergunta besta, mas onde eu altero isso? :oops: Eu fiz o relacionamento por annotations e isso estaria em um .XML não é?

Estagiário, é fogo… hehe

Obrigado!

Leonardo,

Se você estiver utilizando o Eclipse tenta utilizando o método de busca rápida (Ctrl + Shift + R) e digita o nome da sua Classe, que provavelmente é o mesmo ou parecido nome da sua Tabela no Banco.

Indiquei esse “atalho” pois não sei como o Annonation trabalha, então não sei como e nem onde ele criaria o seu *.hbm.xml (não sei se é assim, mas sempre crio os meus relacionamento em Hibernate utilizando o nome da tabela seguido de .hbm - Hibernate Mapping - seguido da extensão .xml).

Bem, pesquise no seu projeto o nome da sua classe ou por *.hbm.xml ou apenas por *.xml e tente encontrar o arquivo desejado. Ou, se preferir, “fotografe” o seu projeto todo e posta aqui a imagem para que eu possa analisar e verificar aonde este arquivo pode estar. Certo?
Abraço!

Bom, eu vasculhei o projeto de ponta a ponta e os
unicos xml que tenho são o struts-config e o web…

Dei uma olhada na Doc do Annotations mas não achei
nada a respeito também.

[]'s

Valeu pela força Bland…

Encontrei as annotation referente a Lazy e Eager…
To postando o link, vai que ajuda mais alguém…

http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/#d0e2175

Mais uma vez obrigado!

Abraço!

De nada Leonardo.

Mas, posta aqui como você resolveu, assim os demais saberão com mais facilidade.

Abraço!

Só adicionando o Eager…

	@ManyToMany(fetch=FetchType.EAGER)
	public List<Aplicacao> getAplicacao() {
		return aplicacao;
	}

[]'s

Leonardo

Cuidado com essa solução hein…
Eager indica que sempre vai carregar a outra colecao…
Cuidado com a performance…

Open Session in View pattern
http://www.hibernate.org/43.html