Pessoal Preciso de uma ajuda urgente…
estou tomando pau do JSF com o Hibernate estava tudo funcionando normal até eu criar um novo metodo…
segue abaixo o codigo…
ERRO
[code]javax.servlet.ServletException: failed to lazily initialize a collection of role: br.com.comax.bean.cliente.ClienteBean.clientesContatoBean, no session or session was closed
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.comax.bean.cliente.ClienteBean.clientesContatoBean, 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.readSize(AbstractPersistentCollection.java:97)
org.hibernate.collection.PersistentBag.size(PersistentBag.java:225)
javax.faces.model.ListDataModel.isRowAvailable(ListDataModel.java:99)
javax.faces.model.ListDataModel.setRowIndex(ListDataModel.java:174)
javax.faces.model.ListDataModel.setWrappedData(ListDataModel.java:209)
javax.faces.model.ListDataModel.(ListDataModel.java:68)
javax.faces.component.UIData.getDataModel(UIData.java:1069)
javax.faces.component.UIData.setRowIndex(UIData.java:417)
com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:85)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
javax.faces.component.UIData.encodeBegin(UIData.java:879)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
[/code]
METODO
DAO
public ClienteBean findByCPF(ClienteBean clienteBean) {
Session session = HibernateFactory.getInstance().openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(ClienteBean.class);
criteria.add(Expression.eq("cpf", clienteBean.getCpf()));
ClienteBean resultado = (ClienteBean) criteria.uniqueResult();
tx.commit();
session.close();
return resultado;
}
ClienteBean
@OneToMany(mappedBy = "clienteBean", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Collection<ClientesContatoBean> clientesContatoBean = new ArrayList<ClientesContatoBean>();
ClientesContatoBean
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cliente_id", insertable = true, updatable = true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.ALL)
private ClienteBean clienteBean;