Muy buen framework, si algun dia se me da el rollo de la web llegare a considerarlo, a proposito alguna fuente de documentación en ingles para ahorrarse la flojera de traducir?...
No hay en español pero tengo como ganas de ayudarles a traducir el documento de apoyo.
Buenas tardes
Estoy trabajando en Hibernate y este es un Bean que yo uso.
cuando en un XHTML hago #{(fn:length(menuHij.productoCollection)) ne 0} me bota este error:Código:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Mercado.Persistencia; import Mercado.Controladora.MercadoControladora; import java.io.Serializable; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * * @author Folger Fonseca Velasco */ @Entity @Table(name = "MENU") @NamedQueries({@NamedQuery(name = "Menu.findAll", query = "SELECT m FROM Menu m"), @NamedQuery(name = "Menu.findByMenuId", query = "SELECT m FROM Menu m WHERE m.menuId = :menuId"), @NamedQuery(name = "Menu.findByNmbMen", query = "SELECT m FROM Menu m WHERE m.nmbMen = :nmbMen"), @NamedQuery(name = "Menu.findByUrlMen", query = "SELECT m FROM Menu m WHERE m.urlMen = :urlMen"), @NamedQuery(name = "Menu.findByDescMen", query = "SELECT m FROM Menu m WHERE m.descMen = :descMen")}) public class Menu implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @Column(name = "MENU_ID") @GeneratedValue(strategy=GenerationType.IDENTITY) private Long menuId; @Column(name = "NMB_MEN") private String nmbMen; @Column(name = "URL_MEN") private String urlMen; @Column(name = "DESC_MEN") private String descMen; @Column(name = "ID_USR") private String idUsr; @Column(name = "FEC_MEN") @Temporal(TemporalType.TIMESTAMP) private Date fecMen; @Column(name = "EST_MEN") private String estMen; @JoinTable(name = "MENU_PRODUCTO", joinColumns = { @JoinColumn(name = "MENU_ID", referencedColumnName = "MENU_ID")}, inverseJoinColumns = { @JoinColumn(name = "PRD_ID", referencedColumnName = "PRD_ID")}) @ManyToMany private Collection<Producto> productoCollection; @OneToMany(mappedBy = "menuId",fetch=FetchType.LAZY) private Collection<Caracteristica> caracteristicaCollection; @JoinColumn(name = "CTL_ID", referencedColumnName = "CTL_ID") @ManyToOne private Catalogo ctlId; @OneToMany(mappedBy = "padId", fetch=FetchType.EAGER) private Collection<Menu> menuCollection; @JoinColumn(name = "PAD_ID", referencedColumnName = "MENU_ID") @ManyToOne private Menu padId; @JoinColumn(name = "ID_APP", referencedColumnName = "ID_APP") @ManyToOne private Aplicacion aplicacion; public Menu() { if(menuId!=null){ try { MercadoControladora mc = new MercadoControladora(); productoCollection = (ArrayList<Producto>) mc.productosPorCategoria(menuId.toString()); } catch (Exception e) { productoCollection = new ArrayList<Producto>(); } } } public Menu(Long menuId) { this.menuId = menuId; } public Long getMenuId() { return menuId; } public void setMenuId(Long menuId) { this.menuId = menuId; } public Aplicacion getAplicacion() { return aplicacion; } public void setAplicacion(Aplicacion aplicacion) { this.aplicacion = aplicacion; } public String getNmbMen() { return nmbMen; } public void setNmbMen(String nmbMen) { this.nmbMen = nmbMen; } public String getUrlMen() { return urlMen; } public void setUrlMen(String urlMen) { this.urlMen = urlMen; } public String getDescMen() { return descMen; } public void setDescMen(String descMen) { this.descMen = descMen; } public String getIdUsr() { return idUsr; } public void setIdUsr(String idUsr) { this.idUsr = idUsr; } public Date getFecMen() { return fecMen; } public void setFecMen(Date fecMen) { this.fecMen = fecMen; } public String getEstMen() { return estMen; } public void setEstMen(String estMen) { this.estMen = estMen; } public Collection<Producto> getProductoCollection() { return productoCollection; } public void setProductoCollection(Collection<Producto> productoCollection) { this.productoCollection = productoCollection; } public Collection<Caracteristica> getCaracteristicaCollection() { return caracteristicaCollection; } public void setCaracteristicaCollection(Collection<Caracteristica> caracteristicaCollection) { this.caracteristicaCollection = caracteristicaCollection; } public Catalogo getCtlId() { return ctlId; } public void setCtlId(Catalogo ctlId) { this.ctlId = ctlId; } public Collection<Menu> getMenuCollection() { return menuCollection; } public void setMenuCollection(Collection<Menu> menuCollection) { this.menuCollection = menuCollection; } public Menu getPadId() { return padId; } public void setPadId(Menu padId) { this.padId = padId; } @Override public int hashCode() { int hash = 0; hash += (menuId != null ? menuId.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Menu)) { return false; } Menu other = (Menu) object; if ((this.menuId == null && other.menuId != null) || (this.menuId != null && !this.menuId.equals(other.menuId))) { return false; } return true; } @Override public String toString() { return "Mercado.Persistencia.Menu[menuId=" + menuId + "]"; } }
Porfa ayudenme con esto... GRACIAS!!!Código:GRAVE: failed to lazily initialize a collection of role: Mercado.Persistencia.Menu.productoCollection, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Mercado.Persistencia.Menu.productoCollection, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350) at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97) at org.hibernate.collection.PersistentBag.size(PersistentBag.java:225) at com.sun.facelets.tag.jstl.fn.JstlFunction.length(JstlFunction.java:88) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstFunction.getValue(AstFunction.java:110) at org.apache.el.parser.AstNotEqual.getValue(AstNotEqual.java:37) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:370) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:271) at org.ajax4jsf.renderkit.html.RepeatRenderer$1.process(RepeatRenderer.java:53) at org.ajax4jsf.model.SequenceDataModel.walk(SequenceDataModel.java:101) at org.ajax4jsf.component.UIDataAdaptor.walk(UIDataAdaptor.java:1133) at org.ajax4jsf.renderkit.html.RepeatRenderer.encodeChildren(RepeatRenderer.java:59) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709) at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680) at org.apache.jsp.forward_jsp._jspService(forward_jsp.java:55) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619) 19/04/2011 04:42:54 PM com.sun.facelets.FaceletViewHandler handleRenderException GRAVE: Error Rendering View[/index.xhtml] javax.faces.FacesException: javax.el.ELException: /templates/templateCliente.xhtml @385,120 rendered="#{(fn:length(menuPad.productoCollection)) ne 0}": Problemas llamando a función 'fn:length' at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:373) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:271) at org.ajax4jsf.renderkit.html.RepeatRenderer$1.process(RepeatRenderer.java:53) at org.ajax4jsf.model.SequenceDataModel.walk(SequenceDataModel.java:101) at org.ajax4jsf.component.UIDataAdaptor.walk(UIDataAdaptor.java:1133) at org.ajax4jsf.renderkit.html.RepeatRenderer.encodeChildren(RepeatRenderer.java:59) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709) at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680) at org.apache.jsp.forward_jsp._jspService(forward_jsp.java:55) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619) Caused by: javax.el.ELException: /templates/templateCliente.xhtml @385,120 rendered="#{(fn:length(menuPad.productoCollection)) ne 0}": Problemas llamando a función 'fn:length' at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:370) ... 48 more Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Mercado.Persistencia.Menu.productoCollection, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350) at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97) at org.hibernate.collection.PersistentBag.size(PersistentBag.java:225) at com.sun.facelets.tag.jstl.fn.JstlFunction.length(JstlFunction.java:88) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstFunction.getValue(AstFunction.java:110) at org.apache.el.parser.AstNotEqual.getValue(AstNotEqual.java:37) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) ... 49 more 19/04/2011 04:42:55 PM com.sun.faces.lifecycle.LifecycleImpl phase ADVERTENCIA: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@1792a8e) threw exception javax.faces.FacesException: javax.el.ELException: /templates/templateCliente.xhtml @385,120 rendered="#{(fn:length(menuPad.productoCollection)) ne 0}": Problemas llamando a función 'fn:length' at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:373) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:271) at org.ajax4jsf.renderkit.html.RepeatRenderer$1.process(RepeatRenderer.java:53) at org.ajax4jsf.model.SequenceDataModel.walk(SequenceDataModel.java:101) at org.ajax4jsf.component.UIDataAdaptor.walk(UIDataAdaptor.java:1133) at org.ajax4jsf.renderkit.html.RepeatRenderer.encodeChildren(RepeatRenderer.java:59) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709) at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680) at org.apache.jsp.forward_jsp._jspService(forward_jsp.java:55) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619) Caused by: javax.el.ELException: /templates/templateCliente.xhtml @385,120 rendered="#{(fn:length(menuPad.productoCollection)) ne 0}": Problemas llamando a función 'fn:length' at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:370) ... 48 more Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Mercado.Persistencia.Menu.productoCollection, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350) at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97) at org.hibernate.collection.PersistentBag.size(PersistentBag.java:225) at com.sun.facelets.tag.jstl.fn.JstlFunction.length(JstlFunction.java:88) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstFunction.getValue(AstFunction.java:110) at org.apache.el.parser.AstNotEqual.getValue(AstNotEqual.java:37) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) ... 49 more 19/04/2011 04:42:55 PM org.ajax4jsf.webapp.BaseXMLFilter doXmlFilter GRAVE: Exception in the filter chain javax.servlet.ServletException: /templates/templateCliente.xhtml @385,120 rendered="#{(fn:length(menuPad.productoCollection)) ne 0}": Problemas llamando a función 'fn:length' at javax.faces.webapp.FacesServlet.service(FacesServlet.java:256) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:709) at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:680) at org.apache.jsp.forward_jsp._jspService(forward_jsp.java:55) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619) Caused by: javax.el.ELException: /templates/templateCliente.xhtml @385,120 rendered="#{(fn:length(menuPad.productoCollection)) ne 0}": Problemas llamando a función 'fn:length' at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:370) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:271) at org.ajax4jsf.renderkit.html.RepeatRenderer$1.process(RepeatRenderer.java:53) at org.ajax4jsf.model.SequenceDataModel.walk(SequenceDataModel.java:101) at org.ajax4jsf.component.UIDataAdaptor.walk(UIDataAdaptor.java:1133) at org.ajax4jsf.renderkit.html.RepeatRenderer.encodeChildren(RepeatRenderer.java:59) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) ... 33 more Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Mercado.Persistencia.Menu.productoCollection, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350) at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97) at org.hibernate.collection.PersistentBag.size(PersistentBag.java:225) at com.sun.facelets.tag.jstl.fn.JstlFunction.length(JstlFunction.java:88) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstFunction.getValue(AstFunction.java:110) at org.apache.el.parser.AstNotEqual.getValue(AstNotEqual.java:37) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) ... 49 more
Cuando uno obtiene un objeto dentro de una sesión que utiliza lazy loading en realidad se crea un objeto proxy que consulta los datos (sus propiedades o columnas en la base de datos) dependiendo de la necesidad, si estas usando el objeto proxy afuera de una sesión te va a lanzar ese error, si no es así y no estás usando Spring hay otra solución.
Yo tuve ese problema hace un tiempo y me saco canas verdes, el problema es usar las anotaciones directamente sobre la variables de instancia como haces ahí, lo que debes hacer es usar las anotaciones sobre los métodos GET, aquí te dejo este blog con información del porque.
La otra es que si usas Spring(todo esto es según el libro Apress Beginning Hibernate del autor Jeff Linwood, pagina 332,333), la cosa es que cuando el método DAO termina, por lo general uno desprende el objeto de la sesión de hibérnate, y si este se pasa a la vista producirá un LazyInitiationException, esto debido a que no se accedió a una propiedad antes de terminar el método y no se cargo la propiedad adecuadamente(recuerda que es un proxy) antes de cerrar la sesión, según varias personas la mejor solución en este caso es usar una clase de Spring llamada OpenSessionInView, busca en Internet como usarla o consulta el libro si lo tienes(también la hay digital).